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.