Skip to content

Releases: nspcc-dev/neofs-node

v0.45.2

25 Mar 18:34
7e06c3f
Compare
Choose a tag to compare

Added

  • min_connection_timeout, ping_interval and ping_timeout options to 'apiclient' SN config section (#3234)

Fixed

  • NPE in metabase V3->4 migration routine (#3212)
  • "new transaction callback finished with error" logs for "already exists in mempool" error (#3218)
  • Panic if logger is not set in FSTree (#3220)
  • Not initialized FSTree in the write-cache (#3220)
  • Potential approval of network map candidate with duplicated attribute by IR (#3224)
  • Unscheduled attempt to tick the epoch when new epoch event has already arrived in IR (#3226)
  • Missing v2 SN approval from IR for netmap node v1 networks (#3238)
  • Collecting of converted attributes in SN ObjectService.SearchV2 handler (#3230)
  • Corrupted data in metabase stops GC cycle and makes problem objects to be kept forever (#3239)
  • Requests hanging after SN disappears from the network (#3234)

Changed

  • Retry flush from write-cache after 10s delay if an error is received (#3221)
  • SN-SN connection management (#3234)

Removed

  • dial_timeout and reconnect_timeout options from apiclient SN config section (#3234)

Updated

  • Minimum required version of Go to 1.23 (#2918)
  • github.com/nspcc-dev/neofs-sdk-go dependency to v1.0.0-rc.13 (#3199)
  • github.com/nspcc-dev/neo-go dependency to v0.108.1 (#3199)
  • github.com/nspcc-dev/hrw/v2 dependency to v2.0.3 (#3199)
  • github.com/stretchr/testify dependency to v1.10.0 (#3199)
  • golang.org/x/exp dependency to v0.0.0-20250210185358-939b2ce775ac (#3199)
  • golang.org/x/net dependency to v0.32.0 (#3199)
  • golang.org/x/sync dependency to v0.11.0 (#3199)
  • google.golang.org/grpc dependency to v1.70.0 (#3199)
  • google.golang.org/protobuf dependency to v1.36.5 (#3199)

Updating from v0.45.1

Following SN configurations must be dropped:

  • apiclient.dial_timeout
  • apiclient.reconnect_timeout

They are replaced by the next ones:

  • apiclient.min_connection_timeout
  • apiclient.ping_interval
  • apiclient.ping_timeout

These options allow to tune SN-SN connections' keepalive behavior. Defaults work in most cases, so do not specify any values unless you have a clear need.

v0.45.1

07 Mar 07:40
ea6b99c
Compare
Choose a tag to compare

Added

  • IR fschain.consensus.p2p_notary_request_payload_pool_size config option (#3195)
  • IR fschain.consensus.rpc.max_gas_invoke config option (#3208)

Fixed

  • Zero range denial by neofs-cli object range|hash commands (#3182)
  • Not all the components needed for write-cache migration were initialized (#3186)
  • Homomorphic hash indexes with empty values in meta bucket (#3187)
  • Failure of 1st split-chain child processing during metabase migration (#3187)
  • Initial epoch tick by a just-started IR (#3007)
  • Missing retries when sending transaction/notary request leading to request failure in case of temporary errors (#3193, #3200, #3205)

Changed

  • Use iterators for container listings (#3196)
  • Also reloading shard mode with SIGHUP (#3192)
  • IR logs INFO its state on start based on read FS chain's internals (#3197)
  • IR cache size for handled notary requests (#3205)
  • Metabase V3->4 migration routine no longer breaks on broken binary or proto-violating object encounter (#3203)
  • Metabase V3->4 migration routine skips objects from the removed containers (#3203)
  • Metabase V3->4 migration routine processes up to 1000 objects per BoltDB transaction and keeps the progress (#3202)
  • Metabase V3->4 migration routine stops gracefully on OS signal (#3202)

v0.45.0 - Sapsido

27 Feb 19:56
9c5767f
Compare
Choose a tag to compare

Unleashing the true scaling potential of NeoFS this release is the first one to break the old ~320 node limit. It also brings a new powerful search API and distributed settings management commands. Write cache received some care and improved its efficiency. A number of other optimizations and fixes is included as well.

Added

  • Initial support for meta-on-chain for objects (#2877)
  • First split-object part into the CLI output (#3064)
  • neofs-cli control notary with list, request and sign commands (#3059)
  • IR fschain.consensus.keep_only_latest_state and fschain.consensus.remove_untraceable_blocks config options (#3093)
  • logger.timestamp config option (#3105)
  • Container system attributes verification on IR side (#3107)
  • IR fschain.consensus.rpc.max_websocket_clients and fschain.consensus.rpc.session_pool_size config options (#3126)
  • ObjectService.SearchV2 SN API (#3111)
  • neofs-cli object searchv2 command (#3119)
  • Retries to update node state on new epoch (#3158)

Fixed

  • neofs-cli object delete command output (#3056)
  • More clear error message when validating IR configuration (#3072)
  • Panic during shutdown if N3 client connection is lost (#3073)
  • The first object of the split object is not deleted (#3089)
  • The parent of the split object is not removed from the metabase (#3089)
  • A split expired object is not deleted after the lock is removed or expired (#3089)
  • neofs_node_engine_list_containers_time_bucket and neofs_node_engine_exists_time_bucket metrics (#3014)
  • neofs_node_engine_list_objects_time_bucket metric (#3120)
  • The correct role parameter to invocation (#3127)
  • nil pointer error for storage sanity command (#3151)
  • Process designation event of the mainnet RoleManagement contract (#3134)
  • Storage nodes running out of GAS because putContainerSize was not paid for by proxy (#3167)
  • Write-cache flushing loop to drop objects (#3169)
  • FS chain client pool overflows and event ordering (#3163)

Changed

  • Number of cuncurrenly handled notifications from the chain was increased from 10 to 300 for IR (#3068)
  • Write-cache size estimations (#3106)
  • New network map support solving the limit of ~320 nodes per network (#3088)
  • Calculation of VUB for zero hash (#3134)
  • More efficient block header subscription is used now instead of block-based one (#3163)
  • ObjectService.GetRange(Hash) ops now handle zero ranges as full payload (#3071)
  • Add some GAS to system fee of notary transactions (#3176)
  • IR now applies sane limits to containers' storage policies recently added to the protocol (#3075)
  • Make flushing objects in write-cache in parallel (#3179)

Removed

  • Drop creating new eacl tables with public keys (#3096)
  • BoltDB from write-cache (#3091)

Updated

  • SDK to the post-api-go version (#3103)
  • neofs-contracts to 0.21.0 (#3157)
  • NeoGo to 0.108.0 (#3157)

Updating from v0.44.2

Using public keys as a rule target in eACL tables was deprecated, and since this realese it is not supported to create new eACL table with keys, use addresses instead. For more information call neofs-cli acl extended create -h.

small_object_size, workers_number, max_batch_size and max_batch_delay paramteters are removed from writecache config. These parameters are related to the BoltDB part of the write-cache, which is dropped from the code. Also, because of this, there will be automatic migration from BoltDB by flushing objects to the main storage and removing database file.

This version maintains two network map lists, the old one is used by default and the new one will be used once "UseNodeV2" network-wide setting is set to non-zero value. Storage nodes add their records to both lists by default, so IR nodes must be updated first, otherwise SNs will fail to bootstrap. Monitor candidates with neofs-adm and make a switch once all nodes are properly migrated to the new list.

IR nodes using embedded CN require chain resynchronization (drop the DB to do that) for this release because of NeoGo updates.

v0.44.2

20 Dec 09:42
373a6e0
Compare
Choose a tag to compare

Fixed

  • Incomplete metabase migration to version 3 leading to node start failure (#3048)

Updated

  • golang.org/x/crypto dependency from 0.26.0 to 0.31.0 (#3049)

v0.44.1

11 Dec 09:50
4f4840c
Compare
Choose a tag to compare

Fixed

  • Fail gracefully on error from config validation (#3037)
  • False-negative object PUT from container node with set copies number (#3042)
  • Metabase resynchronization failure (#3039)

Changed

  • Local object PUT op with copies number set to 1 is allowed now (#3042)
  • Number of cuncurrenly handled notifications from the chain was increased from 10 to 100 (#3043)

Updated

  • NeoGo dependency to 0.107.1 (#3040)

v0.44.0 - Oedo

28 Nov 11:44
918307b
Compare
Choose a tag to compare

Added

  • More effective FSTree writer for HDDs, new configuration options for it (#2814)
  • New health status INITIALIZING_NETWORK in inner ring (#2934)
  • IR health status to Prometheus metrics (#2934)
  • neofs-cli control object list command (#2853)
  • node config option storage.ignore_uninited_shards (#2953)
  • --global-name flag for neofs-cli container create to save container name into __NEOFS__NAME and subsequently register it in NNS contract (#2954)
  • The last metabase resynchronization epoch into metabase (#2966)
  • neofs-lens meta last-resync-epoch command (#2966)
  • neofs-lens fstree cleanup-tmp command (#2967)
  • neofs-cli control object revive command (#2968)
  • --disable-auto-gen-tag flag for gendoc command (#2983)
  • CLI commands documentation to the docs/cli-commands folder (#2983)
  • logger.encoding config option (#2999)
  • Reloading morph endpoints with SIGHUP (#2998)
  • New peapod-to-fstree tool providing peapod-to-fstree data migration (#3013)
  • Reloading node attributes with SIGHUP (#3005)
  • Reloading pool sizes with SIGHUP (#3018)
  • Reloading pprof/metrics services with SIGHUP (#3016)
  • Metrics for shard capacity (#3021)

Fixed

  • Searching (network-wide) for tombstones when handling their expiration, local indexes are used now instead (#2929)
  • Unathorized container ops accepted by the IR (#2947)
  • Structure table in the SN-configuration document (#2974)
  • False negative connection to NeoFS chain in multi-endpoint setup with at least one live node (#2986)
  • Overriding the default container and object attributes only with the appropriate flags (#2985)
  • RPC client reconnection failures leading to complete SN failure (#2797)
  • meta.DB.Open(readOnly) moves metabase in RO mode (#3000)
  • Panic in event listener related to inability to switch RPC node (#2970)
  • Non-container nodes never check placement policy on PUT, SEARCH requests (#3014)
  • If shards are overloaded with PUT requests, operation is not skipped but waits for 30 seconds (#2871)
  • Data corruption if PUT is done too concurrently (#2978)

Changed

  • ObjectService's Put RPC handler caches up to 10K lists of per-object sorted container nodes (#2901)
  • Metabase graveyard scheme (#2929)
  • When an error is returned, no additional help output is displayed in cobra-based programs (#2942)
  • Timestamps are no longer produced in logs if not running with TTY (#2964)
  • In inner ring config, default ports for TCP addresses are used if they are missing (#2969)
  • Metabase is refilled if an object exists in write-cache but is missing in metabase (#2977)
  • Pprof and metrics services stop at the end of SN's application lifecycle (#2976)
  • Reject configuration with unknown fields (#2981)
  • Log sampling is disabled by default now (#3011)
  • EACL is no longer considered for system role (#2972)
  • Deprecate peapod substorage (#3013)
  • Node does not stop trying to PUT an object if there are more PUT tasks than configured (#3027)
  • morph configuration section renamed to fschain both in IR and SN (#3028)
  • FSTree is limited to depth 8 max now (#3031)

Removed

  • Support for node.key configuration (#2959)
  • contracts.alphabet.amount from inner ring config (#2960)

Updated

Updating from v0.43.0

Metabase version has been increased, auto migration will be performed once v0.44.0 Storage Node is started with a v0.43.0 metabase. This action can not be undone. No additional work should be done.

The new storage.put_retry_timeout config value added. If an object cannot be PUT to storage, node tries to PUT it to the best shard for it (according to placement sorting) and only to it for this long before operation error is returned.

Binary keys are no longer supported by storage node, NEP-6 wallet support was introduced in version 0.22.3 and support for binary keys was removed from other components in 0.33.0 and 0.37.0. Please migrate to wallets (see 0.37.0 notes) if you've not done it previously.

The section morph in the config has been renamed to fschain. This version still supports the old section name, but this compatibility code will be removed in the next release. Please rename morph to fschain in your configuration files.

To migrate data from Peapods to FSTree:

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

For any shard, the data from the configured Peapod is copied into an FSTree that must be already configured. Notice that peapod DB is not deleted during migration. An updated (peapod-free) configuration file is also created with ".migrated" suffix (for example, /etc/neofs/config.yaml -> /etc/neofs/config.yaml.migrated). WARN: carefully review the updated config before using it in the application!

FSTree storage provided with this version is more efficient for small files than the Peapod in most cases. We support both fstree and peapod sub-storages, but peapod can be removed in future versions. We recommend using fstree. If you want to use only fstree and storage node already stores some data, don't forget to perform data migration described above.

v0.43.0 - Jukdo

20 Aug 15:52
1a9784c
Compare
Choose a tag to compare

Added

  • Indexes inspection command to neofs-lens (#2882)
  • Add objects sanity checker to neofs-lens (#2506)
  • Support for 0.20.0+ neofs-contract archive format (#2872)
  • neofs-cli control object status command (#2886)
  • Check the account alongside the public key in ACL (#2883)
  • Allow addresses to be used in EACLs created from CLI (#2914)

Fixed

  • Control service's Drop call does not clean metabase (#2822)
  • It was impossible to specify memory amount as "1b" (one byte) in config, default was used instead (#2899)
  • Container session token's lifetime was not checked (#2898)
  • ACL checks for split objects could be forced by a node than might lack access (#2909)

Changed

  • neofs-cli allows several objects deletion at a time (#2774)
  • ObjectService.Put server of in-container node places objects using new ObjectService.Replicate RPC (#2802)
  • ObjectService's Search and Replicate RPC handlers cache up to 1000 lists of container nodes (#2892)
  • Default max_traceable_blocks Morph setting lowered to 17280 from 2102400 (#2897)
  • ObjectService's Get/Head/GetRange RPC handlers cache up to 10K lists of per-object sorted container nodes (#2896)

Updated

  • neofs-contract dependency to 0.20.0 (#2872)
  • NeoGo dependency to 0.106.3 (#2872)

v0.42.1

13 Jun 17:20
450c4e5
Compare
Choose a tag to compare

A tiny update that adds compatibility with the Neo N3 Domovoi hardfork.

Added

  • "morph mint-balance" command to neofs-adm (#2867)

Fixed

  • Unenforced IR morph.consensus.p2p.peers.min config default (#2856)
  • Object parts do not expire (#2858)

Updated

  • NeoGo dependency to 0.106.2 (#2869)

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)