From 75341143144973b77577dbba15d7060ceab86828 Mon Sep 17 00:00:00 2001 From: allencloud Date: Thu, 17 Nov 2016 11:12:21 +0800 Subject: [PATCH] judge manager before unlocking Signed-off-by: allencloud Upstream-commit: 972a246c671b52786a5e57743babfcf7b5b5ae99 Component: engine --- components/engine/daemon/cluster/cluster.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/components/engine/daemon/cluster/cluster.go b/components/engine/daemon/cluster/cluster.go index add9d33569..0afb102362 100644 --- a/components/engine/daemon/cluster/cluster.go +++ b/components/engine/daemon/cluster/cluster.go @@ -585,6 +585,15 @@ func (c *Cluster) GetUnlockKey() (string, error) { // UnlockSwarm provides a key to decrypt data that is encrypted at rest. func (c *Cluster) UnlockSwarm(req types.UnlockRequest) error { + c.RLock() + if !c.isActiveManager() { + if err := c.errNoManager(); err != ErrSwarmLocked { + c.RUnlock() + return err + } + } + c.RUnlock() + key, err := encryption.ParseHumanReadableKey(req.UnlockKey) if err != nil { return err