Sync flag in tree service API #1611
Labels
No labels
P0
P1
P2
P3
badger
frostfs-adm
frostfs-cli
frostfs-ir
frostfs-lens
frostfs-node
good first issue
triage
Infrastructure
blocked
bug
config
discussion
documentation
duplicate
enhancement
go
help wanted
internal
invalid
kludge
observability
perfomance
question
refactoring
wontfix
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: TrueCloudLab/frostfs-node#1611
Loading…
Add table
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?
Is your feature request related to a problem? Please describe.
S3 gateway stores some bucket (container) configurations in a tree service. Tree service is not synchronously replicated, thus in order to be consistent, gateway now picks a "container leader" and sends all read and write operation to the leader node, if available. See frostfs-sdk-go#305
During network connectivity split, leader may not be available. This is okay for regular data-path operations to store and receive object. Objects going to be available after connection is reestablished.
However it is not okay for bucket configuration, especially for "versioning" setting, because it changes the way how S3 gateway stores meta data about the object in tree service. Different network parts may see different "versioning" setting, which is not so great.
Describe the solution you'd like
Allow client to enable synchronous replication for some tree service operations. It may be
sync
flag in request body. When storage node seessync
flag, it does not return response until tree node is synced across all container nodes.Describe alternatives you've considered
We discussed an option to store such sensetive settings in a blockchain, see frostfs-contract#143
Also we discussed a possibility for S3 gateway to store all objects the same way regardless of "versioning" status, and process "versioning" status only for listing / get operations. It may produce other issues such as: