Releases: nspcc-dev/neofs-node
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)
v0.41.0 - Daebudo
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
andLE
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 grantsDELETE
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 CLIacl 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
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
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
tov0.105.1
(#2725)
Updating from v0.39.2
neofs-adm [...] inspect
commands were deleted, use get
instead.