Skip to content

Commit 9cc992f

Browse files
committed
docs(plan): add Online/Offline status open question post-Phase-10.6
The gRPC cutover left Node.Status.ConnectionStatus unwritten — nodeStore.SetConnectionStatus exists but no caller. Capture the two restoration options (Lease vs. self-stamp + heartbeat) under "Open design questions" so the decision isn't lost while we keep working through real-stand e2e regressions. Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
1 parent c0e9620 commit 9cc992f

1 file changed

Lines changed: 1 addition & 0 deletions

File tree

PLAN.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,7 @@ satellite-execute model the rest of Phase 10 uses.
792792

793793
### Open design questions for the user
794794

795+
- [ ] Satellite Online/Offline signal post-Phase-10.6. Before the gRPC cutover the satellite's `Hello` RPC stamped `Node.Status.ConnectionStatus` via `nodeStore.SetConnectionStatus`. After Phase 10.6 the gRPC path is gone and nothing writes that field — `kubectl get nodes.blockstor.io.blockstor.io` always shows an empty `connectionStatus`. Options: (a) satellite holds a `coordination.k8s.io/v1.Lease` per node, renewed every 10-30s, controller-side NodeReconciler maps fresh-Lease → `CONNECTED`, stale-Lease → `OFFLINE` (k8s-native, controller-runtime ships a `LeaseLock` helper, GC happens automatically on pod delete); (b) satellite SSA-writes `Status.ConnectionStatus=ONLINE` + a `LastHeartbeat` timestamp on a fixed cadence, controller flips to OFFLINE past a threshold. Leaning toward (a). **Open** — deferred (2026-05-11) while real-stand e2e regressions are being worked through.
795796
- [x] Two binaries (2026-05-11). `cmd/controller/main.go` + `cmd/satellite/main.go` — each entrypoint stays narrow, RBAC stays minimal per-Deployment, and the satellite image (debian-slim with drbd-utils / lvm2 / cryptsetup / zfsutils) can stay separate from the controller image (distroless static). The build cost is just an extra `go build -o`. Earlier `cmd/main.go` was renamed to `cmd/controller/main.go` in the same change.
796797
- [x] ~~csi-volumes annotation size budget~~ (2026-05-11, retired). The Phase 10.4 cleanup dropped the csi-volumes annotation routing entirely — blockstor no longer writes any per-RD `blockstor.io/csi-volume-data` blob. linstor-csi stores its per-PVC metadata as RD `Aux/csi-volume-annotations` aux properties (small, scoped to the same RD's existing Props map). The annotation-size concern doesn't apply.
797798
- [x] Should `ResourceVolumeStatus.HistoryGi` exist? (2026-05-10) Yes — added with Phase 8.1, currently nil-by-default; the satellite observer writes it only when split-brain forensics are actively requested (the `events2 --full` history-uuids parsing is gated on a flag we'll add when a real split-brain debug surface emerges). Status budget cost is bounded (DRBD keeps last-4 GIs).

0 commit comments

Comments
 (0)