vault: ensure upgrades are cleaned up
This commit is contained in:
parent
db0afc9ebe
commit
5aaad32af8
|
@ -1179,6 +1179,9 @@ func (c *Core) postUnseal() error {
|
||||||
if err := c.barrier.ReloadKeyring(); err != nil {
|
if err := c.barrier.ReloadKeyring(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := c.scheduleUpgradeCleanup(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err := c.loadMounts(); err != nil {
|
if err := c.loadMounts(); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -1387,6 +1390,32 @@ func (c *Core) checkKeyUpgrades() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// scheduleUpgradeCleanup is used to ensure that all the upgrade paths
|
||||||
|
// are cleaned up in a timely manner if a leader failover takes place
|
||||||
|
func (c *Core) scheduleUpgradeCleanup() error {
|
||||||
|
// List the upgrades
|
||||||
|
upgrades, err := c.barrier.List(keyringUpgradePrefix)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to list upgrades: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nothing to do if no upgrades
|
||||||
|
if len(upgrades) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Schedule cleanup for all of them
|
||||||
|
time.AfterFunc(keyRotateGracePeriod, func() {
|
||||||
|
for _, upgrade := range upgrades {
|
||||||
|
path := fmt.Sprintf("%s%s", keyringUpgradePrefix, upgrade)
|
||||||
|
if err := c.barrier.Delete(path); err != nil {
|
||||||
|
c.logger.Printf("[ERR] core: failed to cleanup upgrade: %s", path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// acquireLock blocks until the lock is acquired, returning the leaderCh
|
// acquireLock blocks until the lock is acquired, returning the leaderCh
|
||||||
func (c *Core) acquireLock(lock physical.Lock, stopCh <-chan struct{}) <-chan struct{} {
|
func (c *Core) acquireLock(lock physical.Lock, stopCh <-chan struct{}) <-chan struct{} {
|
||||||
for {
|
for {
|
||||||
|
|
Loading…
Reference in New Issue