diff options
author | Tonis Tiigi <tonistiigi@gmail.com> | 2016-06-13 16:19:05 -0700 |
---|---|---|
committer | Tonis Tiigi <tonistiigi@gmail.com> | 2016-06-13 18:22:35 -0700 |
commit | a7d0b2c466348ae0fc08f8442155756c6765c8f6 (patch) | |
tree | 7951cafd5d417905952f005694e29ed0e1dc641d | |
parent | 95ff9f41d8bfd0a0e4dc36fe83341b551e8f3508 (diff) | |
download | docker-a7d0b2c466348ae0fc08f8442155756c6765c8f6.tar.gz |
Remove state on failed init
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
-rw-r--r-- | daemon/cluster/cluster.go | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/daemon/cluster/cluster.go b/daemon/cluster/cluster.go index c7d40eb348..1746e9b2cf 100644 --- a/daemon/cluster/cluster.go +++ b/daemon/cluster/cluster.go @@ -291,6 +291,11 @@ func (c *Cluster) Init(req types.InitRequest) (string, error) { c.RLock() defer c.RUnlock() if c.err != nil { + if !req.ForceNewCluster { // if failure on first attempt don't keep state + if err := c.clearState(); err != nil { + return "", err + } + } return "", c.err } return "", ctx.Err() @@ -395,6 +400,13 @@ func (c *Cluster) Leave(force bool) error { c.ready = false c.configEvent <- struct{}{} // todo: cleanup optional? + if err := c.clearState(); err != nil { + return err + } + return nil +} + +func (c *Cluster) clearState() error { if err := os.RemoveAll(c.root); err != nil { return err } |