3-degraded
mode with retry to avoid 404 not found #648
Labels
No labels
action
check-aws
action
discussion-needed
action
for-external-contributors
action
for-newcomers
action
more-info-needed
action
need-funding
action
triage-required
kind
correctness
kind
ideas
kind
improvement
kind
performance
kind
testing
kind
usability
kind
wrong-behavior
prio
critical
prio
low
scope
admin-api
scope
background-healing
scope
build
scope
documentation
scope
k8s
scope
layout
scope
metadata
scope
ops
scope
rpc
scope
s3-api
scope
security
scope
telemetry
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Deuxfleurs/garage#648
Loading…
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 running in
3-degraded
, a single node is queried on GetObject calls, to look for the requested object. If the object is written to only two of three nodes and the bad node is queried, a 404 Not Found will be returned.Instead, Garage could query a second node if the first one returns nothing, so that if a new object is created, subsequent GetObject calls will still retrieve it.
This does not ensure that the latest version will be fetched, but at least that a version of the object will be returned.
This is actually quite dangerous, because we could then read an inconsistent value from the versions table, e.g. a version with only a subset of the actual data blocks. And in that case we don't necessarily have a good way of disambiguating between a partial and a complete list of blocks.