-
-
Notifications
You must be signed in to change notification settings - Fork 0
Reliability model
Elah assumes that processes, disks, networks, and messages can fail independently.
Messages may be delayed, duplicated, reordered, or lost. A health check may be wrong. A process may stop without cleaning up. The design does not assume exactly-once delivery or graceful shutdown.
- Every active cell has exactly one authoritative owner at one ownership epoch.
- A stale writer is rejected rather than reconciled later.
- Automatic failover waits for safe storage-level fencing.
- Player transfers use stable identifiers and monotonically increasing state versions.
- An authoritative copy is not deleted before a replacement is durably verified.
- Ordinary gameplay traffic stays out of the control plane.
- Normal Java clients remain normal clients.
A worker that stops answering may be dead, slow, or separated by a network partition. Assigning its cell immediately could create two writers.
The planned response is to keep ownership unavailable until storage-level epoch fencing can reject the old worker.
Player handoff is planned as an idempotent transaction. Repeating the same transfer must not duplicate effects. A target cannot activate stale state, and a recovered source must be fenced after ownership commits elsewhere.
Cell migration is planned as ordered, recorded stages. Rollback is allowed before the ownership epoch commits. After that commit, recovery moves forward to one deterministic result.
The source remains authoritative until a replacement has been copied, durably synchronized, checksummed, manifested, independently verified, and optionally restore-tested.
Elah prefers a visible interruption over hidden corruption.
Elah 0.0.3 | Repository | Releases | Security