Releases: nspcc-dev/neofs-node
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.
v0.39.2
v0.39.1
v0.39.0 - Baegado
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 producedGETRANGE
orGET
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 inPUT
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 ofneofs-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 generate
andneofs-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
tov0.104.0
(#2221, #2309, #2596, #2626, #2639, #2659) neofs-lens
inspect
object commands toget
withinspect
deprecation (#2548)- Update
tzhash
tov1.7.1
github.com/panjf2000/ants/v2
tov2.8.2
github.com/nspcc-dev/neofs-contract
tov0.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
v0.38.0 - Gogado
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 admrenew-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 forneofs-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 tobearer create
andobject put
CLI commands (#1574)--expired-at
flag tosession create
andstoragegroup 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 ininit
andupdate-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 andmorph.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
andIR
(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
tov1.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
andcontracts.subnet
configs are not used anymore. - SN's
node.subnet
config section is not used anymore. neoofs-amd morph
does not havesubnet
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.