From 3adb55c38a9cc4c699f448858593e3d851d682a2 Mon Sep 17 00:00:00 2001 From: Denis Kirillov Date: Mon, 6 Mar 2023 14:56:09 +0300 Subject: [PATCH] [#12] Add __FROSTFS__ system prefix Signed-off-by: Denis Kirillov --- container/types.proto | 10 +++++----- lock/types.proto | 2 +- netmap/types.proto | 2 +- object/service.proto | 22 +++++++++++----------- object/types.proto | 10 +++++----- proto-docs/container.md | 10 +++++----- proto-docs/lock.md | 2 +- proto-docs/netmap.md | 2 +- proto-docs/object.md | 32 ++++++++++++++++---------------- proto-docs/session.md | 6 +++--- proto-docs/storagegroup.md | 2 +- proto-docs/tombstone.md | 2 +- session/types.proto | 6 +++--- storagegroup/types.proto | 2 +- tombstone/types.proto | 2 +- 15 files changed, 56 insertions(+), 56 deletions(-) diff --git a/container/types.proto b/container/types.proto index 71fbaa2..050189a 100644 --- a/container/types.proto +++ b/container/types.proto @@ -37,16 +37,16 @@ message Container { // // There are some "well-known" attributes affecting system behaviour: // - // * __NEOFS__SUBNET \ + // * [ __NEOFS__SUBNET | __FROSTFS__SUBNET ] \ // String ID of a container's storage subnet. Any container can be attached to // one subnet only. - // * __NEOFS__NAME \ + // * [ __NEOFS__NAME | __FROSTFS__NAME ] \ // String of a human-friendly container name registered as a domain in // NNS contract. - // * __NEOFS__ZONE \ - // String of a zone for `__NEOFS__NAME`. Used as a TLD of a domain name in NNS + // * [ __NEOFS__ZONE | __FROSTFS__ZONE ] \ + // String of a zone for `__NEOFS__NAME`/`__FROSTFS__NAME`. Used as a TLD of a domain name in NNS // contract. If no zone is specified, use default zone: `container`. - // * __NEOFS__DISABLE_HOMOMORPHIC_HASHING \ + // * [ __NEOFS__DISABLE_HOMOMORPHIC_HASHING | __FROSTFS__DISABLE_HOMOMORPHIC_HASHING ] \ // Disables homomorphic hashing for the container if the value equals "true" string. // Any other values are interpreted as missing attribute. Container could be // accepted in a NeoFS network only if the global network hashing configuration diff --git a/lock/types.proto b/lock/types.proto index a278709..ac52966 100644 --- a/lock/types.proto +++ b/lock/types.proto @@ -9,7 +9,7 @@ import "refs/types.proto"; // Lock objects protects a list of objects from being deleted. The lifetime of a // lock object is limited similar to regular objects in -// `__NEOFS__EXPIRATION_EPOCH` attribute. Lock object MUST have expiration epoch. +// `__NEOFS__EXPIRATION_EPOCH`/`__FROSTFS__EXPIRATION_EPOCH` attribute. Lock object MUST have expiration epoch. // It is impossible to delete a lock object via ObjectService.Delete RPC call. message Lock { // List of objects to lock. Must not be empty or carry empty IDs. diff --git a/netmap/types.proto b/netmap/types.proto index f6bd43e..6b58cd6 100644 --- a/netmap/types.proto +++ b/netmap/types.proto @@ -164,7 +164,7 @@ message NodeInfo { // attributes it's a string presenting floating point number with comma or // point delimiter for decimal part. In the Network Map it will be saved as // 64-bit unsigned integer representing number of minimal token fractions. - // * __NEOFS__SUBNET_%s \ + // * [ __NEOFS__SUBNET_%s | __FROSTFS__SUBNET_%s ] \ // `True` or `False`. Defines if the node is included in the `%s` subnetwork // or not. `%s` must be an existing subnetwork's ID (non-negative integer number). // A node can be included in more than one subnetwork and, therefore, can contain diff --git a/object/service.proto b/object/service.proto index dfc0892..301d526 100644 --- a/object/service.proto +++ b/object/service.proto @@ -20,11 +20,11 @@ service ObjectService { // keeping the receiving order. // // Extended headers can change `Get` behaviour: - // * __NEOFS__NETMAP_EPOCH \ + // * [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH ] \ // Will use the requsted version of Network Map for object placement // calculation. - // * __NEOFS__NETMAP_LOOKUP_DEPTH \ - // Will try older versions (starting from `__NEOFS__NETMAP_EPOCH` if specified or + // * [ __NEOFS__NETMAP_LOOKUP_DEPTH | __FROSTFS__NETMAP_LOOKUP_DEPTH ] \ + // Will try older versions (starting from `__NEOFS__NETMAP_EPOCH`/`__FROSTFS__NETMAP_EPOCH` if specified or // the latest one otherwise) of Network Map to find an object until the depth // limit is reached. // @@ -54,7 +54,7 @@ service ObjectService { // Chunk messages SHOULD be sent in the direct order of fragmentation. // // Extended headers can change `Put` behaviour: - // * __NEOFS__NETMAP_EPOCH \ + // * [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH \ // Will use the requsted version of Network Map for object placement // calculation. // @@ -85,7 +85,7 @@ service ObjectService { // guarantee. Object will be marked for removal and deleted eventually. // // Extended headers can change `Delete` behaviour: - // * __NEOFS__NETMAP_EPOCH \ + // * [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH ] \ // Will use the requsted version of Network Map for object placement // calculation. // @@ -110,7 +110,7 @@ service ObjectService { // the very minimal information will be returned instead. // // Extended headers can change `Head` behaviour: - // * __NEOFS__NETMAP_EPOCH \ + // * [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH ] \ // Will use the requsted version of Network Map for object placement // calculation. // @@ -137,7 +137,7 @@ service ObjectService { // Specification section for more details. // // Extended headers can change `Search` behaviour: - // * __NEOFS__NETMAP_EPOCH \ + // * [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH ] \ // Will use the requsted version of Network Map for object placement // calculation. // @@ -161,10 +161,10 @@ service ObjectService { // order. // // Extended headers can change `GetRange` behaviour: - // * __NEOFS__NETMAP_EPOCH \ + // * [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH ] \ // Will use the requsted version of Network Map for object placement // calculation. - // * __NEOFS__NETMAP_LOOKUP_DEPTH \ + // * [ __NEOFS__NETMAP_LOOKUP_DEPTH | __FROSTFS__NETMAP_LOOKUP_DEPTH ] \ // Will try older versions of Network Map to find an object until the depth // limit is reached. // @@ -194,10 +194,10 @@ service ObjectService { // the request. Note that hash is calculated for XORed data. // // Extended headers can change `GetRangeHash` behaviour: - // * __NEOFS__NETMAP_EPOCH \ + // * [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH ] \ // Will use the requsted version of Network Map for object placement // calculation. - // * __NEOFS__NETMAP_LOOKUP_DEPTH \ + // * [ __NEOFS__NETMAP_LOOKUP_DEPTH | __FROSTFS__NETMAP_LOOKUP_DEPTH ] \ // Will try older versions of Network Map to find an object until the depth // limit is reached. // diff --git a/object/types.proto b/object/types.proto index ff970ed..ec19334 100644 --- a/object/types.proto +++ b/object/types.proto @@ -114,19 +114,19 @@ message Header { // Objects with duplicated attribute names or attributes with empty values // will be considered invalid. // - // There are some "well-known" attributes starting with `__NEOFS__` prefix + // There are some "well-known" attributes starting with `__NEOFS__`/`__FROSTFS__` prefix // that affect system behaviour: // - // * __NEOFS__UPLOAD_ID \ + // * [ __NEOFS__UPLOAD_ID | __FROSTFS__UPLOAD_ID ] \ // Marks smaller parts of a split bigger object - // * __NEOFS__EXPIRATION_EPOCH \ + // * [ __NEOFS__EXPIRATION_EPOCH | __FROSTFS__EXPIRATION_EPOCH ] \ // Tells GC to delete object after that epoch - // * __NEOFS__TICK_EPOCH \ + // * [ __NEOFS__TICK_EPOCH | __FROSTFS__TICK_EPOCH ] \ // Decimal number that defines what epoch must produce // object notification with UTF-8 object address in a // body (`0` value produces notification right after // object put) - // * __NEOFS__TICK_TOPIC \ + // * [ __NEOFS__TICK_TOPIC | __FROSTFS__TICK_TOPIC ] \ // UTF-8 string topic ID that is used for object notification // // And some well-known attributes used by applications only: diff --git a/proto-docs/container.md b/proto-docs/container.md index b518a67..9cd2d03 100644 --- a/proto-docs/container.md +++ b/proto-docs/container.md @@ -587,16 +587,16 @@ values will be considered invalid. There are some "well-known" attributes affecting system behaviour: -* __NEOFS__SUBNET \ +* [ __NEOFS__SUBNET | __FROSTFS__SUBNET ] \ String ID of a container's storage subnet. Any container can be attached to one subnet only. -* __NEOFS__NAME \ +* [ __NEOFS__NAME | __FROSTFS__NAME ] \ String of a human-friendly container name registered as a domain in NNS contract. -* __NEOFS__ZONE \ - String of a zone for `__NEOFS__NAME`. Used as a TLD of a domain name in NNS +* [ __NEOFS__ZONE | __FROSTFS__ZONE ] \ + String of a zone for `__NEOFS__NAME`/`__FROSTFS__NAME`. Used as a TLD of a domain name in NNS contract. If no zone is specified, use default zone: `container`. -* __NEOFS__DISABLE_HOMOMORPHIC_HASHING \ +* [ __NEOFS__DISABLE_HOMOMORPHIC_HASHING | __FROSTFS__DISABLE_HOMOMORPHIC_HASHING ] \ Disables homomorphic hashing for the container if the value equals "true" string. Any other values are interpreted as missing attribute. Container could be accepted in a NeoFS network only if the global network hashing configuration diff --git a/proto-docs/lock.md b/proto-docs/lock.md index 3bbbf79..80128db 100644 --- a/proto-docs/lock.md +++ b/proto-docs/lock.md @@ -27,7 +27,7 @@ ### Message Lock Lock objects protects a list of objects from being deleted. The lifetime of a lock object is limited similar to regular objects in -`__NEOFS__EXPIRATION_EPOCH` attribute. Lock object MUST have expiration epoch. +`__NEOFS__EXPIRATION_EPOCH`/`__FROSTFS__EXPIRATION_EPOCH` attribute. Lock object MUST have expiration epoch. It is impossible to delete a lock object via ObjectService.Delete RPC call. diff --git a/proto-docs/netmap.md b/proto-docs/netmap.md index 2c7545d..0a9f376 100644 --- a/proto-docs/netmap.md +++ b/proto-docs/netmap.md @@ -406,7 +406,7 @@ explicitly set: attributes it's a string presenting floating point number with comma or point delimiter for decimal part. In the Network Map it will be saved as 64-bit unsigned integer representing number of minimal token fractions. -* __NEOFS__SUBNET_%s \ +* [ __NEOFS__SUBNET_%s | __FROSTFS__SUBNET_%s ] \ `True` or `False`. Defines if the node is included in the `%s` subnetwork or not. `%s` must be an existing subnetwork's ID (non-negative integer number). A node can be included in more than one subnetwork and, therefore, can contain diff --git a/proto-docs/object.md b/proto-docs/object.md index e22f6c0..f0e97eb 100644 --- a/proto-docs/object.md +++ b/proto-docs/object.md @@ -93,11 +93,11 @@ be restored by concatenation of object message payload and all chunks keeping the receiving order. Extended headers can change `Get` behaviour: -* __NEOFS__NETMAP_EPOCH \ +* [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH ] \ Will use the requsted version of Network Map for object placement calculation. -* __NEOFS__NETMAP_LOOKUP_DEPTH \ - Will try older versions (starting from `__NEOFS__NETMAP_EPOCH` if specified or +* [ __NEOFS__NETMAP_LOOKUP_DEPTH | __FROSTFS__NETMAP_LOOKUP_DEPTH ] \ + Will try older versions (starting from `__NEOFS__NETMAP_EPOCH`/`__FROSTFS__NETMAP_EPOCH` if specified or the latest one otherwise) of Network Map to find an object until the depth limit is reached. @@ -131,7 +131,7 @@ object payload. All messages, except first one, SHOULD be payload chunks. Chunk messages SHOULD be sent in the direct order of fragmentation. Extended headers can change `Put` behaviour: -* __NEOFS__NETMAP_EPOCH \ +* [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH \ Will use the requsted version of Network Map for object placement calculation. @@ -166,7 +166,7 @@ Delete the object from a container. There is no immediate removal guarantee. Object will be marked for removal and deleted eventually. Extended headers can change `Delete` behaviour: -* __NEOFS__NETMAP_EPOCH \ +* [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH ] \ Will use the requsted version of Network Map for object placement calculation. @@ -195,7 +195,7 @@ returned. If `main_only` request field is set, the short header with only the very minimal information will be returned instead. Extended headers can change `Head` behaviour: -* __NEOFS__NETMAP_EPOCH \ +* [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH ] \ Will use the requsted version of Network Map for object placement calculation. @@ -226,7 +226,7 @@ Header's filed values. Please see the corresponding NeoFS Technical Specification section for more details. Extended headers can change `Search` behaviour: -* __NEOFS__NETMAP_EPOCH \ +* [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH ] \ Will use the requsted version of Network Map for object placement calculation. @@ -254,10 +254,10 @@ restored by concatenation of all received payload chunks keeping the receiving order. Extended headers can change `GetRange` behaviour: -* __NEOFS__NETMAP_EPOCH \ +* [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH ] \ Will use the requsted version of Network Map for object placement calculation. -* __NEOFS__NETMAP_LOOKUP_DEPTH \ +* [ __NEOFS__NETMAP_LOOKUP_DEPTH | __FROSTFS__NETMAP_LOOKUP_DEPTH ] \ Will try older versions of Network Map to find an object until the depth limit is reached. @@ -291,10 +291,10 @@ length) tuples. Hashes order in response corresponds to the ranges order in the request. Note that hash is calculated for XORed data. Extended headers can change `GetRangeHash` behaviour: -* __NEOFS__NETMAP_EPOCH \ +* [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH ] \ Will use the requsted version of Network Map for object placement calculation. -* __NEOFS__NETMAP_LOOKUP_DEPTH \ +* [ __NEOFS__NETMAP_LOOKUP_DEPTH | __FROSTFS__NETMAP_LOOKUP_DEPTH ] \ Will try older versions of Network Map to find an object until the depth limit is reached. @@ -848,19 +848,19 @@ Key name must be an object-unique valid UTF-8 string. Value can't be empty. Objects with duplicated attribute names or attributes with empty values will be considered invalid. -There are some "well-known" attributes starting with `__NEOFS__` prefix +There are some "well-known" attributes starting with `__NEOFS__`/`__FROSTFS__` prefix that affect system behaviour: -* __NEOFS__UPLOAD_ID \ +* [ __NEOFS__UPLOAD_ID | __FROSTFS__UPLOAD_ID ] \ Marks smaller parts of a split bigger object -* __NEOFS__EXPIRATION_EPOCH \ +* [ __NEOFS__EXPIRATION_EPOCH | __FROSTFS__EXPIRATION_EPOCH ] \ Tells GC to delete object after that epoch -* __NEOFS__TICK_EPOCH \ +* [ __NEOFS__TICK_EPOCH | __FROSTFS__TICK_EPOCH ] \ Decimal number that defines what epoch must produce object notification with UTF-8 object address in a body (`0` value produces notification right after object put) -* __NEOFS__TICK_TOPIC \ +* [ __NEOFS__TICK_TOPIC | __FROSTFS__TICK_TOPIC ] \ UTF-8 string topic ID that is used for object notification And some well-known attributes used by applications only: diff --git a/proto-docs/session.md b/proto-docs/session.md index 2cdfd1e..8dcc6bc 100644 --- a/proto-docs/session.md +++ b/proto-docs/session.md @@ -285,14 +285,14 @@ Key name must be a unique valid UTF-8 string. Value can't be empty. Requests or Responses with duplicated header names or headers with empty values will be considered invalid. -There are some "well-known" headers starting with `__NEOFS__` prefix that +There are some "well-known" headers starting with `__NEOFS__` or `__FROSTFS__` prefix that affect system behaviour: -* __NEOFS__NETMAP_EPOCH \ +* [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH ] \ Netmap epoch to use for object placement calculation. The `value` is string encoded `uint64` in decimal presentation. If set to '0' or not set, the current epoch only will be used. -* __NEOFS__NETMAP_LOOKUP_DEPTH \ +* [ __NEOFS__NETMAP_LOOKUP_DEPTH | __FROSTFS__NETMAP_LOOKUP_DEPTH ] \ If object can't be found using current epoch's netmap, this header limits how many past epochs the node can look up through. The `value` is string encoded `uint64` in decimal presentation. If set to '0' or not set, only the diff --git a/proto-docs/storagegroup.md b/proto-docs/storagegroup.md index 3bc0b5e..c31f3e4 100644 --- a/proto-docs/storagegroup.md +++ b/proto-docs/storagegroup.md @@ -31,7 +31,7 @@ additional information used for the proof of storage. `StorageGroup` only contains objects from the same container. Being an object payload, StorageGroup may have expiration Epoch set with -`__NEOFS__EXPIRATION_EPOCH` well-known attribute. When expired, StorageGroup +`__NEOFS__EXPIRATION_EPOCH`/`__FROSTFS__EXPIRATION_EPOCH` well-known attribute. When expired, StorageGroup will be ignored by InnerRing nodes during Data Audit cycles and will be deleted by Storage Nodes. diff --git a/proto-docs/tombstone.md b/proto-docs/tombstone.md index 4657935..3da8c4b 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 the tombstone creator depending on the current NeoFS network settings. A tombstone object must have the same expiration epoch value in `__NEOFS__EXPIRATION_EPOCH` attribute. Otherwise, the tombstone will be rejected by a storage node. | +| expiration_epoch | [uint64](#uint64) | | Last NeoFS epoch number of the tombstone lifetime. It's set by the tombstone creator depending on the current NeoFS network settings. A tombstone object must have the same expiration epoch value in `__NEOFS__EXPIRATION_EPOCH`/`__FROSTFS__EXPIRATION_EPOCH` attribute. Otherwise, the tombstone will be rejected by a storage node. | | split_id | [bytes](#bytes) | | 16 byte UUID used to identify the split object hierarchy parts. Must be unique inside a 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. | diff --git a/session/types.proto b/session/types.proto index 2a236d6..5963c40 100644 --- a/session/types.proto +++ b/session/types.proto @@ -137,14 +137,14 @@ message SessionToken { // Responses with duplicated header names or headers with empty values will be // considered invalid. // -// There are some "well-known" headers starting with `__NEOFS__` prefix that +// There are some "well-known" headers starting with `__NEOFS__` or `__FROSTFS__` prefix that // affect system behaviour: // -// * __NEOFS__NETMAP_EPOCH \ +// * [ __NEOFS__NETMAP_EPOCH | __FROSTFS__NETMAP_EPOCH ] \ // Netmap epoch to use for object placement calculation. The `value` is string // encoded `uint64` in decimal presentation. If set to '0' or not set, the // current epoch only will be used. -// * __NEOFS__NETMAP_LOOKUP_DEPTH \ +// * [ __NEOFS__NETMAP_LOOKUP_DEPTH | __FROSTFS__NETMAP_LOOKUP_DEPTH ] \ // If object can't be found using current epoch's netmap, this header limits // how many past epochs the node can look up through. The `value` is string // encoded `uint64` in decimal presentation. If set to '0' or not set, only the diff --git a/storagegroup/types.proto b/storagegroup/types.proto index f504afe..946affe 100644 --- a/storagegroup/types.proto +++ b/storagegroup/types.proto @@ -13,7 +13,7 @@ import "refs/types.proto"; // contains objects from the same container. // // Being an object payload, StorageGroup may have expiration Epoch set with -// `__NEOFS__EXPIRATION_EPOCH` well-known attribute. When expired, StorageGroup +// `__NEOFS__EXPIRATION_EPOCH`/`__FROSTFS__EXPIRATION_EPOCH` well-known attribute. When expired, StorageGroup // will be ignored by InnerRing nodes during Data Audit cycles and will be // deleted by Storage Nodes. // diff --git a/tombstone/types.proto b/tombstone/types.proto index 1a31726..1e475d6 100644 --- a/tombstone/types.proto +++ b/tombstone/types.proto @@ -12,7 +12,7 @@ import "refs/types.proto"; message Tombstone { // Last NeoFS epoch number of the tombstone lifetime. It's set by the tombstone // creator depending on the current NeoFS network settings. A tombstone object - // must have the same expiration epoch value in `__NEOFS__EXPIRATION_EPOCH` + // must have the same expiration epoch value in `__NEOFS__EXPIRATION_EPOCH`/`__FROSTFS__EXPIRATION_EPOCH` // attribute. Otherwise, the tombstone will be rejected by a storage node. uint64 expiration_epoch = 1 [json_name = "expirationEpoch"];