Skip to content

Releases: nspcc-dev/neofs-node

v0.42.0 - Dokdo

22 May 18:31
9a9a5d5
Compare
Choose a tag to compare

This release adds compatibility with the Neo N3 Cockatrice hardfork, so while other changes are minor it's still an important update.

Added

  • "storage list" command to neofs-lens (#2852)

Fixed

  • GETRANGE request may fail in certain cases (#2849)

Changed

  • SN API server responds with status message even to old clients from now (#2846)

Removed

  • IR contracts deployment code. Moved to the contracts repo (#2812)
  • blobovnicza-to-peapod migration utility (#2842)

Updated

  • neofs-contract dependency (#2847)
  • NeoGo dependency to 0.106.0 (#2854)

Updating from v0.41.1

Notice that blobovnicza-to-peapod migration utility is gone. Blobovniczas were removed from the node since 0.39.0, so if you're using any current NeoFS node version it's not a problem. If you're using 0.38.0 or lower with blobovniczas configured, please migrate using earlier releases.

v0.41.1

27 Apr 19:24
1cb9970
Compare
Choose a tag to compare

A set of fixes and small utility improvements. We're providing darwin and arm64 binaries for you as well now.

Added

  • Container estimations inspector to neofs-adm (#2826)
  • Metabase object lister to neofs-lens (#2834)
  • Shard ID from metabase reader to neofs-lens (#2834)
  • neofs-cli bearer print command for reading binary bearer tokens (#2829)
  • linux-arm64, darwin-amd64 and darwin-arm64 binaries, linux-arm64 Docker images (#2835)

Fixed

  • Attribute ACL checks for the first split object (#2820)
  • Container size estimation contract writing (#2819)
  • Custom contract deployment with custom zone via neofs-adm (#2827)
  • Errors in neofs-adm morph dump-names output (#2831)
  • GC stops if any non-critical "content" errors happen (#2823)
  • Endless GC cycle if an object is stored on an unexpected shard (#2821)
  • Storage node searches for objects even if local state prohibits operation (#1709)
  • First object in a split chain can de deleted (#2839)

v0.41.0 - Daebudo

19 Apr 12:45
7f03438
Compare
Choose a tag to compare

A very important release bringing a number of protocol changes. We have not changed the protocol for more than a year, but now we're doing that to add support for new functionality as well as fix long-standing issues.

Added

  • Support of numeric object search queries (#2733)
  • Support of GT, GE, LT and LE numeric comparison operators in CLI (#2733)
  • SN eACL processing of NULL and numeric operators (#2742)
  • CLI now allows to create and print eACL with numeric filters (#2742)
  • gRPC connection limits per endpoint (#1240)
  • neofs-lens object link command for the new link object inspection (#2799)
  • Storage nodes serve new ObjectService.Replicate RPC (#2674)

Fixed

  • Access to PUT objects no longer grants DELETE rights (#2261)
  • Storage nodes no longer reject GET w/ TTL=1 requests to read complex objects (#2447)
  • Response exceeding the deadline for TLS errors (#2561)
  • neofs-adm morph generate-storage-wallet was not able to read --initial-gas flag (#2766)
  • Inter-node connections closed on any status response (#2767)
  • Child objects were available for deletion despite any lock relations (#2093)

Changed

  • IR now checks format of NULL and numeric eACL filters specified in the protocol (#2742)
  • Empty filter value is now treated as NOT_PRESENT op by CLI acl extended create cmd (#2742)
  • Storage nodes no longer accept objects with header larger than 16KB (#2749)
  • IR sends NeoFS chain GAS to netmap nodes every epoch, not per a configurable blocks number (#2777)
  • Big objects are split with the new split scheme (#2667, #2782, #2784, #2788, #2792, #2807)
  • Background replicator transfers objects using new ObjectService.Replicate RPC (#2317)
  • Tombstone objects are not allowed to store child objects (incomplete puts are exceptional) (#2810)

Removed

  • Object notifications incl. NATS (#2750)
  • Supporting of __NEOFS__NETMAP* X-headers (#2751)
  • Option to use insecure TLS cipher suites (#2755)
  • Counter metrics that were deprecated since v0.38.0 (#2798)

Updated

Updating from v0.40.1

Remove notification section from all SN configuration files: it is no longer supported. All NATS servers running for this purpose only are no longer needed. If your app depends on notifications transmitted to NATS, do not update and create an issue please.

Stop attaching __NEOFS__NETMAP* X-headers to NeoFS API requests. If your app is somehow tied to them, do not update and create an issue please.

Notice that this is the last release containing blobovnicza-to-peapod migration utility. Blobovniczas were removed from the node since 0.39.0, so if you're using any current NeoFS node version it's not a problem. If you're using 0.38.0 or lower with blobovniczas configured, please migrate ASAP.

Remove grpc.tls.use_insecure_crypto from any storage node configuration.

Remove timers.emit from any inner ring configuration.

v0.40.1

22 Feb 06:23
9756cc4
Compare
Choose a tag to compare

Fixed

  • Inability to deploy contract with non-standard zone via neofs-adm (#2740)
  • Container session token's wildcard field support (#2741)

Updating from v0.40.0

We no longer provide .tag.gz binaries in releases, they always were just duplicates, but if you're using them in some scripts please update to fetch raw binaries. All binaries have OS in their names as well now, following regular naming used throughout NSPCC, so instead of neofs-cli-amd64 you get neofs-cli-linux-amd64 now.

v0.40.0 - Maldo

09 Feb 17:00
v0.40.0
1e37ecb
Compare
Choose a tag to compare

Added

  • neofs-adm morph generate-storage-wallet now supports more than one wallet generation per call (#2425)
  • Missing containers cleanup (#1663)

Fixed

  • IR does not wait for HTTP servers to stop gracefully before exiting (#2704)
  • Zero exit code if IR fails (#2704)
  • Neo RPC client failure when the first endpoint is unavailable even if there are more endpoints to try (#2703)
  • Incorrect address mapping of the Alphabet contracts in NNS produced by deployment procedure (#2713)
  • IR compares and logs public keys difference, not hash of keys difference at SN verification check (#2711)
  • Incorrect handling of notary request leading to inability to collect signatures in some cases (#2715)
  • Deadlock in autodeploy routine (#2720)
  • SN now validates session tokens attached to objects (#1159)

Changed

  • Created files are not group writable (#2589)
  • IR does not create new notary requests for the SN's bootstraps but signs the received ones instead (#2717)
  • IR can handle third-party notary requests without reliance on receiving the original one (#2715)
  • SN validates container session token's issuer to be container's owner (#2466)
  • Storage node now consumes much less memory when slicing small data of a fixed size (#2719)

Removed

  • Deprecated neofs-adm [...] inspect commands (#2603)

Updated

  • neo-go to v0.105.1 (#2725)

Updating from v0.39.2

neofs-adm [...] inspect commands were deleted, use get instead.

v0.39.2

21 Dec 12:04
v0.39.2
df2cc08
Compare
Choose a tag to compare

NeoFS chain's auto-deployment fixes with some maintainability improvements.

Added

  • Logs on a connection drop in the cache of NeoFS API clients (#2694)

Fixed

  • Auto-deployment of the Balance and Container contracts (#2695)

v0.39.1

19 Dec 12:23
v0.39.1
5c66479
Compare
Choose a tag to compare

Fixed

  • Fund transfer deadlock in NeoFS chain auto-deploy/update procedure (#2681)
  • Invalid contracts' update transactions when epochs are stuck during the NeoFS chain update (#2680)
  • Metrics availability during startup (#2677)

v0.39.0 - Baegado

12 Dec 14:46
v0.39.0
6151f15
Compare
Choose a tag to compare

Complete contract autodeploy/autoupdate functionality, much simplified SN/IR attribute interaction, numerous optimizations and obligatory bug fixes --- that's your new NeoFS release in short. Beware of deprecated commands and options removal, check your scripts and configurations and update to the latest and greatest of NeoFS.

Added

  • Policer's setting to the SN's application configuration (#2600)
  • Support of verified domains for the storage nodes (#2280)
  • neofs-lens storage status CLI command (#2550)
  • Human-readable output of objects' creation timestamp to neofs-cli container list-objects (#2653)
  • Ability to preset P2PNotary and NeoFSAlphabet roles to validators at the FS chain's genesis (#2643)

Fixed

  • neofs-cli netmap netinfo documentation (#2555)
  • GETRANGEHASH to a node without an object produced GETRANGE or GET requests (#2541, #2598)
  • Iteration over locally collected container estimation values (#2597)
  • Synchronous objects PUT to the local storage (#2607)
  • copies_number field was not used in PUT request handling (#2607)
  • Neo-go notary deposit data workaround (#2429)
  • Error of missing network endpoint in neofs-cli object commands when it is set in the file config (#2608)

Changed

  • FSTree storage now uses more efficient and safe temporary files under Linux (#2566, #2624, #2633)
  • BoltDB open timeout increased from 100ms to 1s (#2499)
  • Internal container cache size from 10 to 1000 (#2600)
  • Transaction witness scope no longer uses CustomGroups relying on more strict Rules now (#2619)
  • New optimized SDK version is integrated (#2622)
  • IR uses internal LOCODE DB from Go package (#2610, #2658)
  • Contract group for the committee is no longer registered/used in the Sidechain auto-deployment (#2642)
  • IR does not change SNs' attributes, SNs expand UN/LOCODE attributes do it themselves (#2612)
  • The priority of metrics service is increased (#2428)
  • The priority of running control service is maximized (#2585)

Removed

  • Deprecated no-precheck flag of neofs-cli container set-eacl (#2496)
  • Recently-handled objects Policer's cache (#2600)
  • Deprecated blobovnicza substorage (#2614)
  • Contract group wallet support from neofs-adm (#2619)
  • neofs-cli util locode generateand neofs-cli util locode info commands (#2610)
  • Locode DB configuration options (#2610)
  • v prefix in version (#2640)

Updated

  • Update minimal supported Go version up to v1.19 (#2485)
  • Update neo-go to v0.104.0 (#2221, #2309, #2596, #2626, #2639, #2659)
  • neofs-lens inspect object commands to get with inspect deprecation (#2548)
  • Update tzhash to v1.7.1
  • github.com/panjf2000/ants/v2 to v2.8.2
  • github.com/nspcc-dev/neofs-contract to v0.18.0 (#2580)
  • golang.org/x/net to 0.17.0 (#2621)
  • github.com/nats-io/nats-server/v2 to 2.9.23 (#2623)
  • UUID, golang-lru, compress, go-multiaddr, nats.go, cobra, grpc and other dependencies (#2632)
  • hrw library to v2.0.0 version (#2629, #2658)
  • github.com/nats-io/nkeys to 0.4.6 (#2636)
  • neofs-contract to v0.19.1 (#2659)

Updating from v0.38.1

Blobovniczas are gone from the node with this release, see 0.38.0 upgrade notes for migration instruction (the tool is still provided, but will be gone after a couple of minor releases).
neofs-adm no longer creates a contract group wallet and no longer needs it for the operation which may affect deployment scripts.
Pre-0.39.0 storage nodes may not be able to register on the network running 0.39.0 inner ring nodes unless they provide complete LOCODE data in the configuration (0.39.0 SNs add it automatically, so upgrade SNs).
native_activations subsection of consensus IR configuration should be removed. It never actually did anything useful anyway.
Automatic contract deployments and updates require fschain_autodeploy configuration, currently it's optional an IR behaves as previously by default.

v0.38.1

18 Sep 13:18
v0.38.1
c938228
Compare
Choose a tag to compare

A tiny fix for peapod-enabled nodes.

Fixed

  • Inability to start node with peapods configured (#2576)
  • neofs-adm morph set-config command error messages (#2556)

v0.38.0 - Gogado

13 Sep 15:54
v0.38.0
22559a9
Compare
Choose a tag to compare

A number of important fixes are brought by this release, including protocol ones (subnet and system EACL changes), as well as an updated storage subsystem and useful CLI updates making it more powerful and user-friendly at the same time.

Some previously deprecated configuration options were removed, so be careful and this is the last minor release to support the Blobovnicza tree storage subsystem. Starting with the next minor release, the component will be purged,so be prepared (see Updating section) and migrate to more efficient and simple Peapod.

Added

  • Embedded Neo contracts in contracts dir (#2391)
  • dump-names command for adm
  • renew-domain command for adm
  • Stored payload metric per container (#2116)
  • Stored payload metric per shard (#2023)
  • Histogram metrics for RPC and engine operations (#2351)
  • New storage component for small objects named Peapod (#2453)
  • New blobovnicza-to-peapod tool providing blobovnicza-to-peapod data migration (#2453)
  • SN's version and capacity is announced via the attributes automatically but can be overwritten explicitly (#2455, #602)
  • peapod command for neofs-lens (#2507)
  • New CLI exit code for awaiting timeout (#2380)
  • New CLI exit code for already removed objects (#2376)
  • Validation of excessive positional arguments to neofs-cli commands (#1941)
  • --lifetime flag to bearer create and object put CLI commands (#1574)
  • --expired-at flag to session create and storagegroup put CLI commands (#1574)
  • Sessions to RPC server running in IR's local consensus mode (#2532)
  • neofs-cli object nodes command to get SNs for an object (#2512)
  • Fetching container estimations via iterators to prevent NeoVM stack overflow (#2173)
  • neofs-adm morph netmap-candidates CLI command (#1889)
  • SN network validation (is available by its announced addresses) on bootstrap by the IR (#2475)
  • Display of container alias fee info in neofs-cli netmap netinfo (#2553)
  • neofs-lens storage inspect CLI command (#1336)
  • neofs-lens payload-only flag (#2543)
  • neofs-lens meta put CLI command (#1816)

Fixed

  • neo-go RPC connection loss handling (#1337)
  • Concurrent morph cache misses (#1248)
  • Double voting for validators on IR startup (#2365)
  • Skip unexpected notary events on notary request parsing step (#2315)
  • Session inactivity on object PUT request relay (#2460)
  • Missing connection retries on IR node startup when the first configured mainnet RPC node is not in sync (#2474)
  • Storage node no longer ignores unhealthy shards on startup (#2464)
  • Processing of status errors returned by API client from NeoFS SDK RC-9 (#2465)
  • neofs-lens write-cache list command duplication (#2505)
  • neofs-adm works with contract wallet in init and update-contracts commands only (#2134)
  • Missing removed but locked objects in SEARCH's results (#2526)
  • LOCK objects and regular objects expiration conflicts (#2392)
  • SN responds with a different node information compared to a bootstrapping contract call's argument (#2568)
  • neofs-cli object put command processes multiple --attributes flags (#2427)

Removed

  • Deprecated morph.rpc_endpoint SN and morph.endpoint.client IR config sections (#2400)
  • neofs_node_object_epoch metric for IR and SN (#2347)
  • Subnets support (#2411)
  • Logging utility completely replaced with zap.Logger (#696)
  • System eACL modification ability in the neofs-cli and IR (netmap candidate validation) (#2531)

Changed

  • CLI --timeout flag configures whole execution timeout from now (#2124)
  • CLI default timeout for commands with --await flag increased to 1m (#2124)
  • BlobStor tries to store object in any sub-storage with free space (#2450)
  • SN does not store container estimations in-mem forever (#2472)
  • CLI neofs-cli container set-eacl checks container's ownership (#2436)

Updated

  • neofs-sdk-go to v1.0.0-rc.11

Updating from v0.37.0

CLI command timeouts (flag --timeout) now limit the total command execution time and not single network operation. If any commands suddenly start to fail on timeout, try increasing the value, for example, twice. Also note that the execution of commands with the --await flag and without an explicitly specified time period is now limited to 1 minute. This value can be changed with--timeout flag.

Histogram (not counter) RPC/engine operation handling time metrics were added. For an old engine *operation_name*_duration a new *operation_name*_time is available.For an old *operation_name*_req_duration RPC a new rpc_*operation_name*_time is available. The old ones (the counters) have been deprecated and will be removed with the following minor release.

Container estimation main node calculation has been changed. A new 32-byte long array is taken as a sorting pivot: it is an estimated container with the first 8 bytes replaced with a target epoch in a little-endian encoding now.

Deprecated morph.rpc_endpoint SN and morph.endpoint.client IR configurations have been removed. Use morph.endpoints for both instead.

Deprecated neofs_node_object_epoch metric for IR and SN (the same for both) has been removed. Use neofs_node_state_epoch for SN and neofs_ir_state_epoch for IR instead.

Deprecated --no-precheck flag in neofs-cli container set-eacl use --force flag instead for skipping validation checks.

Subnets support has been removed:

  • IR's workers.subnet and contracts.subnet configs are not used anymore.
  • SN's node.subnet config section is not used anymore.
  • neoofs-amd morph does not have subnet subcommand anymore.
  • neofs-cli container create does not have --subnet flag anymore.

Docker images now contain a single executable file and SSL certificates only.

neofs-cli control healthcheck exit code is 0 only for "READY" state.

To migrate data from Blobovnicza trees to Peapods:

$ blobovnicza-to-peapod -config </path/to/storage/node/config>

For any shard, the data from the configured Blobovnicza tree is copied into a created Peapod file named peapod.db in the directory where the tree is located. For example, /neofs/data/blobovcniza/* -> /neofs/data/peapod.db. Notice that existing Blobovnicza trees are untouched. Configuration is also updated, for example, /etc/neofs/config.yaml -> /etc/neofs/config_peapod.yaml. WARN: carefully review the updated config before using it in the application!

To store small objects in more effective and simple sub-storage Peapod, replace blobovnicza sub-storage with the peapod one in blobstor config section. If storage node already stores some data, don't forget to make data migration described above.