Skip to content

Releases: nspcc-dev/neofs-node

v0.51.1

18 Feb 19:43
c9370f3

Choose a tag to compare

Added

  • neofs-cli container policy check command (#3790)
  • neofs-adm mainchain update command (#3799, #3811)
  • neofs-adm mainchain version command (#3811)
  • policer_consistency_state SN metric that means all SN's objects correspond placement policies (#3795)

Fixed

  • Unclosed compressed FSTree files (#3802)
  • Potential payload overflow on getting full object from combined FSTree file (#3801)
  • Too high nbf/iat token defaults in CLI for testnet/mainnet (#3819)
  • Repeated attempts to delete nonexistent objects (#3820)
  • Address change in configuration not triggering netmap update (#3828)
  • Billing for networks with 0.25.0 -> 0.26.0 migrated contracts (#3832)

Changed

  • SN retries notary requests if insufficient amount of gas error appears (#3739)
  • Speed up metabase resync by using batch operations (#3804)

Updated

  • NeoGo dependency to 0.117.0 (#3829)
  • neofs-contracts to 0.26.1 (#3832)

v0.51.0

04 Feb 11:53
58f146c

Choose a tag to compare

A number of important protocol updates are delivered with this release including mutable NEP-11 containers, synchronous container operations and session token version 2. Metabase optimizations make some operations like object deletion significantly faster. Object service optimizations also allow to squeeze some additional ops/s from hardware, most noticeably for RANGE requests and PUT into containers using erasure coding.

Added

  • SN now supports new getInfo and createV2 methods of the Container contract (#3670)
  • IR now supports container creation requests submitted via new createV2 contract method (#3670)
  • IR structures containers in the contract iteratively (#3670, #3732)
  • SN tries new NEP-11 methods tokens and tokensOf of Container contract (#3701)
  • SN now listens to NEP-11 transfer events of Container contract (#3701)
  • CLI supports CONTAINER_AWAIT_TIMEOUT status now (#3711)
  • Policer logs when it reaches the end of its cycle (#3720)
  • Support for GET of LINK objects in EC containers (#3722)
  • Containers can now be locked for deletion via __NEOFS__LOCK_UNTIL attribute (#3708)
  • SN can respond with CONTAINER_LOCKED status now (#3708)
  • session create-v2 cli command to create new session token v2 (#3750)
  • SN now support raw GET/HEAD/RANGE requests in EC containers (#3756)
  • IR now serves setAttribute and removeAttribute methods of Container contract (#3733)
  • SN now serves ContainerService's SetAttribute and RemoveAttribute RPC (#3733, #3784)
  • CLI set-attribute and remove-attribute commands to container` section (#3733, #3784)
  • Size-split object is now available even when LINK is unavailable in EC container (#3754)
  • neofs-adm balance container-status command (#3693)
  • Container IDs to JSON output of ADM fschain dump-containers command (#3789)
  • Support for IDs from JSON to ADM fschain restore-containers command (#3789)
  • IR supports new session token v2 (#3671)
  • SN supports new session token v2 for container and object operations (#3671)

Fixed

  • IR panics at graceful shutdown (#3706)
  • IR using netmap contract to store IR node list instead of RoleManagement (#3707)
  • Missing PUT local storage operation log when flushing objects from write cache to underlying blobstor (#3720)
  • EC parts of expired object no longer remain on SN (#3718)
  • Metabase reset not deleting old buckets in some cases (#3744)
  • Object left in the storage after unsuccessful meta PUT (#3744)
  • Object left in some shards on fatal broadcast failure (#3744)
  • Deadlock on SN exit in rare GC cases (#3744)
  • SN no longer counts removed parent objects as physical ones in metrics (#3717)
  • SN updates internal cache (if any) after attribute changes immediately (#3780)
  • Error handling in removeNode notary request (#3786)
  • SN RANGE continuation in EC multi-rule case (#3662)

Changed

  • Optimized locking info in metabase (#3672)
  • Lock objects with API <2.18 are no longer accepted (#3672)
  • SN handles ContainerService's Put, Delete and SetExtendedACL requests in sync manner (#3711)
  • SNs report storage statistics with random time offset if netmap is empty (#3714)
  • SN removes objects immediately when requested via control service now instead of just marking them to be deleted by GC (#3727)
  • Tombstone objects with API <2.18 are no longer accepted (#3731)
  • Garbage marking scheme in metabase (#3753)
  • SN sorts shards identically when writing and reading EC parts (#3773)
  • SN puts EC parts concurrently now (#3777)
  • Optimized object-to-shard placement (#3794)

Removed

  • Deprecated fschain_autodeploy, without_mainnet, governance.disable, fee.main_chain and contracts IR config options (#3716)
  • Metabase v3 to v4 migration (#3735)
  • Metabase v4 to v5 migration (#3735)
  • Broken logical object metric from shards (#3741)
  • Graveyard from metabase (#3744)
  • "ToMoveIt" bucket from the metabase (#3763)

Updated

Updating from v0.50.2

Please remove the following deprecated configuration options from IR config:

  • fschain_autodeploy
  • without_mainnet
  • governance.disable
  • fee.main_chain
  • contracts
    They were removed in this version and using them will lead to failure to start the node.

Storage nodes no longer automatically migrate metabases from version 3 (NeoFS 0.44.0) to 4 (NeoFS 0.45.0) and from version 4 to version 5 (NeoFS 0.46.0), resynchronize or migrate using SN 0.50.2 if needed.

v0.50.2

27 Nov 09:43
2de6d94

Choose a tag to compare

Changed

  • SN announces load reports in a separate single routine (#3703)

Fixed

  • IR deadlock in basic income routine (#3700)

v0.50.1

24 Nov 20:03
e1882ff

Choose a tag to compare

Changed

  • Session iterator expansion is enabled for internal SN RPC (#3695)

Fixed

  • Container and Balance contract updates for 7 Alphabet nodes networks (#3696)

v0.50.0

24 Nov 05:51
df67c62

Choose a tag to compare

Added

  • Erasure coding in containers' storage policies (#3570)
  • IR experimental.allow_ec config option (#3570)
  • SN pprof.enable_block and pprof.enable_mutex options (#3655)
  • neofs-adm fschain load-report command (#3649)
  • neofs-adm fschain load-summary command (#3687)

Fixed

  • Write cache using too much CPU (#3642)
  • Split object with link not found stuck in GC cycle (#3653)
  • Quotas TTL (#3665)
  • SN load reporting race (#3652)
  • Incompatibility with wallets using non-standard scrypt parameters (#3675)
  • Improper handling of Incomplete status in CLI commands (#3679)
  • Incomplete status response missing data for SEARCH/PUT/DELETE operations (#3679, #3683, #3684, #3686)
  • Basic income payments (#3357)

Changed

  • Move fschain_autodeploy into fschain.disable_autodeploy in IR config (#3619)
  • Move without_mainnet into mainnet.enabled in IR config (#3619)
  • Move governance.disable into mainnet.disable_governance_sync in IR config (#3619)
  • Move fee.main_chain into mainnet.extra_fee in IR config (#3619)
  • Move contracts into mainnet.contracts in IR config (#3619)
  • Move persistent_sessions data to persistent_state in SN (#3630)
  • More efficient write cache batching for small objects (#3414, #3682)
  • SN now indexes metadata for root objects nested twice (parents of parents) (#3674)
  • Storage nodes do not serve unpaid containers (#774)
  • IR logs public keys in HEX encoding, not base64 (#3690)

Removed

  • Pre-0.46.0 write cache format migration (#3647)

Updated

  • NeoGo dependency to 0.114.0 (#3679)
  • NeoFS SDK dependency to RC16+ (#3679)
  • golang.org/x/crypto dependency from 0.42.0 to 0.45.0 (#3685)
  • neofs-contract from 0.24.0 to 0.25.1 (#3650)

Updating from v0.49.1

Erasure coding is available in experimental mode. To enable it, set experimental.allow_ec flag in IR config.

Use IR configuration options:

  • fschain.disable_autodeploy instead of deprecated fschain_autodeploy with reverted value, by default autodeploy is enabled now;
  • mainnet.enabled instead of deprecated without_mainnet with reverted value, by default mainnet is disabled now;
  • mainnet.disable_governance_sync instead of deprecated governance.disable;
  • mainnet.extra_fee instead of deprecated fee.main_chain;
  • mainnet.contracts instead of deprecated contracts;
    Old options are still supported but will be removed in future releases.

SN config option node.persistent_sessions.path now is deprecated and used only for migration. Sessions are stored in node.persistent_state.path option now.

Write cache migration from pre-0.46.0 format is no longer supported, use some earlier version if you still have write cache database with objects.

Contracts autoupdate doesn't support pre-0.20.0 contract versions corresponding to NeoFS 0.43.0 release. Update from earlier versions using 0.49.1 first.

v0.49.1

15 Oct 12:49
7c0c1d0

Choose a tag to compare

Fixed

  • Excessive duplicating fields in container report logs (#3631)
  • Attempts to put container reports for alien containers (#3631)
  • Split object stuck in GC cycle (#3633)

v0.49.0 - Dochodo

06 Oct 19:36
c6dc363

Choose a tag to compare

Added

  • object.search.pool_size configuration option for SN (#3583)
  • Used payload quotas (#3520)

Fixed

  • Send on closed channel panic in node's new epoch handler (#3529)
  • Tomstoned objects revival not working (#3542)
  • Negative logic object counters in metabase (#3555)
  • Inability to list 2K+ containers via API (#3558)
  • Not using the IR fee.main_chain config parameter (#3584)
  • Metadata signatures submission (#3591)
  • Expired lock still locked the object (#3601, #3616)
  • Empty storage and error-free startup when changing layout parameters (#3594)
  • Flaky storage evacuation unit test (#3605)
  • Incorrect search request from SN when processing tombstones (#3610)
  • neofs-cli container list lists nothing if there are no flags (#3613)

Changed

  • Stream payload without buffering to reduce memory usage in CLI Get/Put operations (#3535)
  • neofs-cli object range command now truncates file passed to --file (#3544)
  • neofs-cli object range command now creates file with rw-r--r-- permissions (#3544)
  • Alphabet nodes send basic storage income based on the new Reports API from container contract (#3053)
  • Use stream API of FSTree for object service Get operation (#3466, #3568)
  • Use meta buckets to mark containers with GC (#3561)
  • Switched to local BoltDB fork based on go.etcd.io/bbolt version 1.4.3 (#3576)
  • Move processing of expired objects from the epoch event handler to the regular GC cycle (#3582)
  • More compact EACL table representation in neofs-cli acl extended print command (#3597)
  • Storage node returns new Busy/Incomplete/BadRequest status codes when appropriate (#3606)

Removed

  • neofs-cli object head --main-only no-op flag (#3509)
  • IR's estimations timer management (#3539)
  • neofs-adm fschain estimations command (#3572)
  • --oid flag from CLI object search commands (#3606)

Updated

  • github.com/nspcc-dev/neofs-sdk-go dependency to v1.0.0-rc.15 (#3569, #3606)
  • Minimum required Go version to 1.24 (#3135)
  • github.com/cenkalti/backoff/v4 dependency from v4.2.1 to v4.3.0 (#3589)
  • github.com/klauspost/compress dependency from v1.17.11 to v1.18.0 (#3589)
  • github.com/klauspost/reedsolomon depdendency from v1.12.4 to v1.12.5 (#3589)
  • github.com/multiformats/go-multiaddr dependency from v0.12.2 to v0.16.1 (#3589)
  • github.com/nspcc-dev/hrw/v2 dependency from v2.0.3 to v2.0.4 (#3589)
  • github.com/nspcc-dev/locode-db depdendency from v0.6.0 to v0.8.1 (#3589)
  • github.com/nspcc-dev/neo-go dependency from v0.111.0 to v0.112.0 (#3589)
  • github.com/nspcc-dev/tzhash dependency from v1.8.2 to v1.8.3 (#3589)
  • github.com/panjf2000/ants/v2 dependency from v2.9.0 to v2.11.3 (#3589)
  • github.com/prometheus/client_golang dependency from v1.21.1 to v1.23.2 (#3589)
  • github.com/spf13/cast dependency from v1.6.0 to v1.10.0 (#3589)
  • github.com/spf13/cobra dependency from v1.8.1 to v1.10.1 (#3589)
  • github.com/spf13/pflag dependency from v1.0.6 to v1.0.10 (#3589)
  • github.com/spf13/viper dependency from v1.18.2 to v1.21.0 (#3589)
  • golang.org/x/exp dependency from v0.0.0-20250819193227-8b4c13bb791b to v0.0.0-20250911091902-df9299821621 (#3589)
  • golang.org/x/net dependency from v0.43.0 to v0.44.0 (#3589)
  • google.golang.org/grpc dependency from v1.70.0 to v1.75.1 (#3589)
  • google.golang.org/protobuf dependency from v1.36.8 to v1.36.9 (#3589)
  • github.com/nspcc-dev/neofs-contract dependency to v0.24.0 (#3620)

Updating from v0.48.3

Drop --main-only flag from all neofs-cli object head commands.
Drop IR's timers.stop_estimation.* and timers.distribute_basic_income configuration values, they are not used anymore.
neofs-adm fschain estimations was removed.

v0.48.3

14 Aug 09:49
0a90006

Choose a tag to compare

Fixed

  • SN no longer caches request-dependent container session errors (#3526)
  • SN no longer caches request-dependent bearer token errors (#3527)
  • Unclear SN status message for bearer token issuer mismatch (#3527)
  • Panic due to buffer size when extracting header from combined object in FSTree (#3518)
  • Endless loop when extracting header from combined object in FSTree (#3518)

Changed

  • SN no longer accepts PUT eACL requests without container ID (#3515)

Removed

  • Metabase version 2 to 3 migration code, minimal corresponding NeoFS version is 0.44.0 (#3514)

Updating from v0.48.2

Metabase version 2 can't be migrated to current with this version of NeoFS, if
you're updating from version earlier than 0.44.0 consider metabase resync or
updating using 0.48.2 first and then using this version.

v0.48.2

08 Aug 14:22
a76aa66

Choose a tag to compare

Fixed

  • Tombstoned objects cannot be locked now (#3495)
  • RPC client deadlock when GC cycle takes more than an epoch on some shard (#3507)

Changed

  • Tombstone objects are removed faster after expiration now (#3511)

Updated

  • NeoFS SDK to RC14 version fixing object inaccessibility problem (#3510)

v0.48.1

31 Jul 12:29
5d20065

Choose a tag to compare

Fixed

  • Missing garbage, graveyard and to-move buckets in object metabase status (#3485)
  • Incorrect garbage bucket setting in metabase on tombstone writing (#3484)
  • Incorrect garbage bucket items via metabase migration (#3484)
  • Rare IR deadlocks during contract deployment (#3237)
  • Rare failure to add container into listened list for meta-enabled nodes (#3491)
  • Incorrect height passed into N3 verification scripts (#3494)

Changed

  • CLI uses dynamic polling interval now depending on block time (half a block, but not less than 50ms), this reduces delays for fast networks (#3488)

Removed

  • Redundant EACL check in GetRange and Search handlers (#3481)
  • Duplicated EACL checks in Get and Head handlers (#3481)