Commit feccf8f
Rewrite Cassandra persist-only design doc around choices and learnings
Restructure docs/cassandra-single-writer-design.md to focus on why over
what: brief mechanics, explicit design choices, and the learnings from
the deferred full solution, mirroring the Kafka design doc's shape
(Problem, mechanism, Testing, Rejected alternatives, Forward-looking):
- Problem now explains why the Kafka fix does not transfer to Cassandra
(no transaction to bind the offset commit into, no ownership
authority), motivating a per-write, per-key fence.
- The mechanism is kept brief and its three load-bearing choices are
called out explicitly: per-key granularity, `<=` over `<`, and
ordering by data rather than identity.
- "Why the store is the whole change" makes the SnapshotFold replay
dedup explicit as the property that lets persist-only ship without
core changes.
- A Compatibility section collects the no-API-change / no-migration /
write-side-only-fence consequences.
- The deferred full solution (offset-gated deletes, PR evolution-gaming#834) is retold
as a forced chain - tombstone, breaking delete(key, offset) API,
monotonic buffer, tombstone-floor recovery read, independent
events-recovery seeding - with a livelock diagram, the TLA+ results
(all defects were liveness, never safety; models in PR evolution-gaming#835), and the
explicit deferral rationale (cost/benefit and KIP-939 timing).
Also make the rolling-deploy clock-skew caveat in persistence.md
concrete (coordinator vs client write timestamps), and update a test
comment referencing a renamed doc section.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018jfVxUNrjxpcSFF2hgiar51 parent 42bab55 commit feccf8f
3 files changed
Lines changed: 211 additions & 137 deletions
File tree
- docs
- persistence-cassandra-it-tests/src/test/scala/com/evolutiongaming/kafka/flow/snapshot
0 commit comments