Implements Johan's design: - Primary POP (e.g., Calgary) replicates writes to Backup POP (e.g., Zurich) - Backup serves READ-ONLY traffic when primary fails - Same wire format preserved for replication - Async, non-blocking replication with queue + retry Database Schema: - Added replication_dirty BOOLEAN column to entries table - Index idx_entries_dirty for fast dirty entry lookup - EntryMarkDirty() - mark entry needing replication - EntryMarkReplicated() - clear dirty flag on ACK - EntryListDirty() - get pending entries (fast path) Commercial-Only Files: - edition/replication.go - core replication queue/worker - edition/backup_mode.go - backup mode detection, write rejection - edition/commercial.go - wire up IsBackupMode, IsBackupRequest Backup Mode: - CLAVITOR_BACKUP_MODE env var sets backup mode - BackupModeMiddleware rejects writes with 503 - X-Primary-Location header tells client where primary is - IsBackupMode() and IsBackupRequest() edition functions Community: - No replication functionality (privacy-first, single-node) - IsBackupMode() always returns false - StartReplication() is no-op Documentation: - SPEC-replication.md - full design specification |
||
|---|---|---|
| .. | ||
| pop-sync | ||
| scripts | ||
| .DS_Store | ||
| ._.DS_Store | ||