Blobovnicza GET after PUT is inconsistent under high concurrency #536
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: TrueCloudLab/frostfs-node#536
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?
When issuing a synchronous
GET
call immediately afterPUT
while the storage is under heavy concurrent usage, sometimesGET
returnsobject not found
.Expected Behavior
It should either:
UNAVAILABLE
in gRPC terminology, which is canonically retryable)Current Behavior
Sporadically returns
object not found
.Possible Solution
Up for discussion.
Steps to Reproduce (for bugs)
The problems is with
opened_cache_size
-- if it is small, we can have side-effects: blobovniczas are opened and closed concurrently because of the limited cache and nothing prevents the DB from being closed while some object is being read.I suggest remove
opened_cache_size
completely and always cache everything in memory: