fthomas / fthomas/crjdt

[Question] Garbage collection

Open
#83 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Scala
Stars
298
Forks
18
PR merge metrics
No merged PRs in 30d

Description

Hi

It looks like JSON CRDT described in the paper suffers from 2 kinds of unbounded growth problems

- Tombstones in lists/sets
- Applied operations

Are there any ways to garbage-collect? At some point I want to commit current state and clear operations. But then it is unclear how a newly added replica will converge with old replica - paper only describes transmission of messages.

Same thing goes for tombstones. For an actively edited document the amount of tombstones may get out of hand. A possible solution that comes to mind - define some kind of `Commit` type of the operation that will signal to replica to perform tombstone GC. Commit Op is emitted arbitrarily by the programmer.

Please share your thoughts on the subject

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reviewing the JSON CRDT paper and the issue's concerns about tombstones, applied operations, commits, and newly added replicas. Define garbage-collection semantics that preserve convergence between old and new replicas, with completion demonstrated for both operation history and tombstone growth.

Written by the indexing model from the issue text.

Assessment

Tech stack
scala
Domain
distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.