vip: a claim made before etcd stays without a lease after etcd forms, so no lease fence and no automatic failover #161
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Keel-Linux/keel#161
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found on real nodes on 2026-10-15 (keel 0.23.21, handbook decision 0057, evidence
docs/evidence/2026-10-15-br3-thin-etcd-witness.md).What happened
The PostgreSQL pair 9062 (BR2) and 9054 (BR1) was
cloud_simple, with the VIPfd1a:bb4c:b407::ffff:1at epoch 8. The claim came from the members' channel, so it has no lease. A witness joined, both pair nodes moved tocloud_advancedby their specs, andkeel mesh etcd formformed a cluster of 3.keel-vip.servicestarted on both pair nodes.After the form, and after one run of
keel mesh etcd tend:/keel/<mesh>/vip/. The counter is empty./var/lib/keel/vip/<vip>.jsonon the holder says"lease": null.valid_lft forever. The controller does not renew a lease, and the kernel never removes the address.keel vip promoteon the holder prints "this node holds ... already, at epoch 8" and exits 0 (promoted_etcd).keel vip statusshows the same output as before etcd.Why
Controller.own()takes only claims with a lease, soholding()does nothing for the claim of epoch 8.fail_over()on the other node returns whenheld.claim.lease is None. Thus the pair has etcd, but it has no lease fence and no automatic failover. Nothing says so.Expected
When etcd forms, or at the first turn of the controller, the holder of a claim without a lease claims again by the counter's transaction at the next epoch. Or
keel vip statusandkeel mesh statussay that the claim has no lease, and name the command that moves it.Workaround
A planned
keel database promote(no--old-primary-gone) on the replica. It claims at the next epoch by the counter's transaction, with a lease.