mirror of
https://github.com/nspcc-dev/neofs-api.git
synced 2026-03-01 04:28:54 +00:00
Do not store system data in raw key-value attributes #104
Labels
No labels
I0
I1
I2
I3
I4
S0
S1
S2
S3
S3
S4
U2
U3
U4
bug
discussion
discussion
documentation
enhancement
enhancement
enhancement
feature
good first issue
question
task
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nspcc-dev/neofs-api#104
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @cthulhu-rider on GitHub (Aug 31, 2023).
NeoFS protocol contains several messages with raw string k-v attributes. These fields is dedicated for the user- or application-specific stuff and the system almost always not interested in them. At the same time, there are system attributes like
__NEOFS__EXPIRATION_EPOCH. This is very (very) bad approach cuz it raises a lot of duality issues.The most interesting case is
nspcc-dev/neofs-api@7ae1a7438b/object/service.proto (L527)where user attributes are mixed with object headers and even logical properties. For example, expiration attribute is a regular attribute in SEARCH context, and the system overall.Proposal
Sad thing that we already have attributes like
__NEOFS__EXPIRATION_EPOCHthat must be supported until next major version.@roman-khimov commented on GitHub (Aug 31, 2023):
There are good things about it too, it can be used in various attribute-related expressions just like any other attribute, not needing any specific logic.
Which adds some overhead even when the attribute is not used.
No major version can help with old objects.
I don't think we can or even should change this. Frankly, it'd be easier to maintain the system if we had more attributes, like object creation epoch is completely useless right now, but we can't create an object without it. It also allows for more extensibility without object format changes.
@roman-khimov commented on GitHub (Apr 3, 2024):
Not planned.