Maybe better CRDTs for object_table, version_table and block_ref_table? #19
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#19
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?
(As started in #18)
But maybe not.
object_table: complex reconciliation logic, better suited for a custom CRDT.
version_table: we would need a crdt for a simple map, and not an LWWMap. Also we need to make it clear that Map CRDTs are ordered (they are, because the data is in fact just stored in a vec, it isn't even a btree or what), because the block list relies on the fact that blocks are ordered...
block_ref_table: the only crdt is a boolean, we could use crdt::Bool for that but then we would have to add a migration, and the logic is so simple it can't be messed up so there is no advantage of using crdt::Bool instead of just a bool
Mostly done in
dev-0.2