Roadmap¶
Done¶
- HostLiveness — TTL-lease registration, background refresh, immediate
revoke on
Stop, and a self-healing keep-alive loop with exponential backoff. - HostWatcher — synthetic-
Upsnapshot, gap-free watch from the snapshot revision,Downevents carrying last-seen metadata, and self-suppression. - Election —
Campaign, non-blockingTryCampaign,Resign,Observe. - ElectionPool — one long-lived session per key,
Statsfor diagnostics. - Quality — CGO-free, no vendoring,
gofmt+go vetclean, 100% test coverage including every error branch, CI green across the six 64-bit Go targets (amd64, arm64, riscv64, loong64, ppc64le, s390x).
Possible future work¶
- Distributed mutex / RWMutex helpers on top of etcd-concurrency's
Mutex, mirroring theElectionergonomics. - Configurable refresh cadence surfaced explicitly (today the keep-alive
cadence is driven by etcd's lease machinery;
LivenessOptions.Refreshis reserved for a future manual-refresh mode). - Metrics hooks — counters for re-registrations, elected/resigned
transitions, and watcher lag, for
/metricssurfacing. - Typed metadata generic over the JSON value, so callers can carry their own host descriptor without a second decode.
Nothing here is required for the current use cases; the core primitives are complete. Suggestions welcome via issues on github.com/go-coord/coord.