Skip to content

v0.38.0 - Gogado

Compare
Choose a tag to compare
@sami-nspcc sami-nspcc released this 13 Sep 15:54
· 603 commits to master since this release
v0.38.0
22559a9

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 adm
  • renew-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 for neofs-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 to bearer create and object put CLI commands (#1574)
  • --expired-at flag to session create and storagegroup 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 in init and update-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 and morph.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 and IR (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 to v1.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 and contracts.subnet configs are not used anymore.
  • SN's node.subnet config section is not used anymore.
  • neoofs-amd morph does not have subnet 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.