diff --git a/CHANGELOG.md b/CHANGELOG.md index a4cddb2..8ac3209 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [2.4.0] - 2021-02-26 - Ganghwado (강화도, 江華島) + +This release provides new RPC method to fetch network info from storage node. +By getting current epoch value, application might set up correct expiration +values in the objects. + +### Added + +- `netmap.NetworkInfo` request for getting node's network view. +- Release instructions. + +### Changed + +- Clarified processing of empty search query in `object.Search` RPC. +- Specified connection of tombstone expiration value with well-known + `__NEOFS__EXPIRATION_EPOCH` object attribute. + ## [2.3.0] - 2021-02-11 - Seonyudo (선유도, 仙遊島) This release brings support for nodes to exchange information about disk space @@ -313,3 +330,4 @@ Bump major release [2.2.0]: https://github.com/nspcc-dev/neofs-api/compare/v2.1.1...v2.2.0 [2.2.1]: https://github.com/nspcc-dev/neofs-api/compare/v2.2.0...v2.2.1 [2.3.0]: https://github.com/nspcc-dev/neofs-api/compare/v2.2.1...v2.3.0 +[2.4.0]: https://github.com/nspcc-dev/neofs-api/compare/v2.3.0...v2.4.0 diff --git a/proto-docs/netmap.md b/proto-docs/netmap.md index ab0cde6..6b2493c 100644 --- a/proto-docs/netmap.md +++ b/proto-docs/netmap.md @@ -12,12 +12,17 @@ - [LocalNodeInfoRequest.Body](#neo.fs.v2.netmap.LocalNodeInfoRequest.Body) - [LocalNodeInfoResponse](#neo.fs.v2.netmap.LocalNodeInfoResponse) - [LocalNodeInfoResponse.Body](#neo.fs.v2.netmap.LocalNodeInfoResponse.Body) + - [NetworkInfoRequest](#neo.fs.v2.netmap.NetworkInfoRequest) + - [NetworkInfoRequest.Body](#neo.fs.v2.netmap.NetworkInfoRequest.Body) + - [NetworkInfoResponse](#neo.fs.v2.netmap.NetworkInfoResponse) + - [NetworkInfoResponse.Body](#neo.fs.v2.netmap.NetworkInfoResponse.Body) - [netmap/types.proto](#netmap/types.proto) - Messages - [Filter](#neo.fs.v2.netmap.Filter) + - [NetworkInfo](#neo.fs.v2.netmap.NetworkInfo) - [NodeInfo](#neo.fs.v2.netmap.NodeInfo) - [NodeInfo.Attribute](#neo.fs.v2.netmap.NodeInfo.Attribute) - [PlacementPolicy](#neo.fs.v2.netmap.PlacementPolicy) @@ -47,6 +52,7 @@ NeoFS nodes. ``` rpc LocalNodeInfo(LocalNodeInfoRequest) returns (LocalNodeInfoResponse); +rpc NetworkInfo(NetworkInfoRequest) returns (NetworkInfoResponse); ``` @@ -61,6 +67,13 @@ further communication. Can also be used to check if node is up and running. | Name | Input | Output | | ---- | ----- | ------ | | LocalNodeInfo | [LocalNodeInfoRequest](#neo.fs.v2.netmap.LocalNodeInfoRequest) | [LocalNodeInfoResponse](#neo.fs.v2.netmap.LocalNodeInfoResponse) | +#### Method NetworkInfo + +Read recent information about the NeoFS network. + +| Name | Input | Output | +| ---- | ----- | ------ | +| NetworkInfo | [NetworkInfoRequest](#neo.fs.v2.netmap.NetworkInfoRequest) | [NetworkInfoResponse](#neo.fs.v2.netmap.NetworkInfoResponse) | @@ -108,6 +121,51 @@ Local Node Info, including API Version in use. | version | [neo.fs.v2.refs.Version](#neo.fs.v2.refs.Version) | | Latest NeoFS API version in use | | node_info | [NodeInfo](#neo.fs.v2.netmap.NodeInfo) | | NodeInfo structure with recent information from node itself | + + + +### Message NetworkInfoRequest +Get NetworkInfo structure with the network view from particular node. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| body | [NetworkInfoRequest.Body](#neo.fs.v2.netmap.NetworkInfoRequest.Body) | | Body of the NetworkInfo request message | +| meta_header | [neo.fs.v2.session.RequestMetaHeader](#neo.fs.v2.session.RequestMetaHeader) | | Carries request meta information. Header data is used only to regulate message transport and does not affect request execution. | +| verify_header | [neo.fs.v2.session.RequestVerificationHeader](#neo.fs.v2.session.RequestVerificationHeader) | | Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. | + + + + +### Message NetworkInfoRequest.Body +NetworkInfo request body is empty. + + + + + +### Message NetworkInfoResponse +Response with NetworkInfo structure including current epoch and +sidechain magic number. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| body | [NetworkInfoResponse.Body](#neo.fs.v2.netmap.NetworkInfoResponse.Body) | | Body of the NetworkInfo response message. | +| meta_header | [neo.fs.v2.session.ResponseMetaHeader](#neo.fs.v2.session.ResponseMetaHeader) | | Carries response meta information. Header data is used only to regulate message transport and does not affect response execution. | +| verify_header | [neo.fs.v2.session.ResponseVerificationHeader](#neo.fs.v2.session.ResponseVerificationHeader) | | Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission. | + + + + +### Message NetworkInfoResponse.Body +Information about the network. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| network_info | [NetworkInfo](#neo.fs.v2.netmap.NetworkInfo) | | NetworkInfo structure with recent information. | + @@ -139,6 +197,18 @@ results, that will satisfy filter's conditions. | filters | [Filter](#neo.fs.v2.netmap.Filter) | repeated | List of inner filters. Top level operation will be applied to the whole list. | + + +### Message NetworkInfo +Information about NeoFS network + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| current_epoch | [uint64](#uint64) | | Number of the current epoch in the NeoFS network. | +| magic_number | [uint64](#uint64) | | Magic number of the sidechain of the NeoFS network. | + + ### Message NodeInfo diff --git a/proto-docs/object.md b/proto-docs/object.md index ab07679..355f7a4 100644 --- a/proto-docs/object.md +++ b/proto-docs/object.md @@ -554,6 +554,11 @@ Object Search request body Filter structure checks if object header field or attribute content matches a value. +If no filters set, search request will return all objects of the +container, including Regular object, Tombstones and Storage Group +objects. Most human users expect to get only object they can directly +work with. In that case the `$Object:ROOT` filter should be used. + By default `key` field refers to the corresponding object's `Attribute`. Some Object's header fields can also be accessed by adding `$Object:` prefix to the name. Here is the list of fields available via this prefix: diff --git a/proto-docs/tombstone.md b/proto-docs/tombstone.md index e43a212..1dca62a 100644 --- a/proto-docs/tombstone.md +++ b/proto-docs/tombstone.md @@ -31,7 +31,7 @@ purged from the NeoFS network. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| expiration_epoch | [uint64](#uint64) | | Last NeoFS epoch number of the tombstone lifetime. It's set by tombstone creator depending on current NeoFS network settings. | +| expiration_epoch | [uint64](#uint64) | | Last NeoFS epoch number of the tombstone lifetime. It's set by tombstone creator depending on current NeoFS network settings. Tombstone object must have the same expiration epoch value in `__NEOFS__EXPIRATION_EPOCH` attribute. Otherwise tombstone will be rejected by storage node. | | split_id | [bytes](#bytes) | | 16 byte UUID used to identify the split object hierarchy parts. Must be unique inside container. All objects participating in the split must have the same `split_id` value. | | members | [neo.fs.v2.refs.ObjectID](#neo.fs.v2.refs.ObjectID) | repeated | List of objects to be deleted. |