Releases: nspcc-dev/neofs-node
v0.45.2
Added
min_connection_timeout
,ping_interval
andping_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
andreconnect_timeout
options fromapiclient
SN config section (#3234)
Updated
- Minimum required version of Go to 1.23 (#2918)
github.com/nspcc-dev/neofs-sdk-go
dependency tov1.0.0-rc.13
(#3199)github.com/nspcc-dev/neo-go
dependency tov0.108.1
(#3199)github.com/nspcc-dev/hrw/v2
dependency tov2.0.3
(#3199)github.com/stretchr/testify
dependency tov1.10.0
(#3199)golang.org/x/exp
dependency tov0.0.0-20250210185358-939b2ce775ac
(#3199)golang.org/x/net
dependency tov0.32.0
(#3199)golang.org/x/sync
dependency tov0.11.0
(#3199)google.golang.org/grpc
dependency tov1.70.0
(#3199)google.golang.org/protobuf
dependency tov1.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
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
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
withlist
,request
andsign
commands (#3059)- IR
fschain.consensus.keep_only_latest_state
andfschain.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
andfschain.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
andneofs_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
Updated
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
v0.44.1
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
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 optionstorage.ignore_uninited_shards
(#2953)--global-name
flag forneofs-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
'sPut
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 tofschain
both in IR and SN (#3028)- FSTree is limited to depth 8 max now (#3031)
Removed
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
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 newObjectService.Replicate
RPC (#2802)ObjectService
'sSearch
andReplicate
RPC handlers cache up to 1000 lists of container nodes (#2892)- Default max_traceable_blocks Morph setting lowered to 17280 from 2102400 (#2897)
ObjectService
'sGet
/Head
/GetRange
RPC handlers cache up to 10K lists of per-object sorted container nodes (#2896)
Updated
v0.42.1
v0.42.0 - Dokdo
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
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
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)