mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-10-29 17:52:32 +00:00
Fix k8s service registration case where Vault fails to unlabel itself as a leader (#21642)
This commit is contained in:
3
changelog/21642.txt
Normal file
3
changelog/21642.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
```release-note:bug
|
||||
serviceregistration: Fix bug where multiple nodes in a secondary cluster could be labelled active after updating the cluster's primary
|
||||
```
|
||||
20
vault/ha.go
20
vault/ha.go
@@ -710,6 +710,13 @@ func (c *Core) waitForLeadership(newLeaderCh chan func(), manualStepDownCh, stop
|
||||
c.heldHALock = nil
|
||||
}
|
||||
|
||||
// Advertise ourselves as a standby.
|
||||
if c.serviceRegistration != nil {
|
||||
if err := c.serviceRegistration.NotifyActiveStateChange(false); err != nil {
|
||||
c.logger.Warn("failed to notify standby status", "error", err)
|
||||
}
|
||||
}
|
||||
|
||||
// If we are stopped return, otherwise unlock the statelock
|
||||
if stopped {
|
||||
return
|
||||
@@ -1133,18 +1140,7 @@ func (c *Core) cleanLeaderPrefix(ctx context.Context, uuid string, leaderLostCh
|
||||
// clearLeader is used to clear our leadership entry
|
||||
func (c *Core) clearLeader(uuid string) error {
|
||||
key := coreLeaderPrefix + uuid
|
||||
err := c.barrier.Delete(context.Background(), key)
|
||||
|
||||
// Advertise ourselves as a standby
|
||||
if c.serviceRegistration != nil {
|
||||
if err := c.serviceRegistration.NotifyActiveStateChange(false); err != nil {
|
||||
if c.logger.IsWarn() {
|
||||
c.logger.Warn("failed to notify standby status", "error", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return err
|
||||
return c.barrier.Delete(context.Background(), key)
|
||||
}
|
||||
|
||||
func (c *Core) SetNeverBecomeActive(on bool) {
|
||||
|
||||
Reference in New Issue
Block a user