|
@@ -88,10 +88,6 @@ func (c *Cluster) Init(req types.InitRequest) (string, error) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- if !req.ForceNewCluster {
|
|
|
|
- clearPersistentState(c.root)
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
nr, err := c.newNodeRunner(nodeStartConfig{
|
|
nr, err := c.newNodeRunner(nodeStartConfig{
|
|
forceNewCluster: req.ForceNewCluster,
|
|
forceNewCluster: req.ForceNewCluster,
|
|
autolock: req.AutoLockManagers,
|
|
autolock: req.AutoLockManagers,
|
|
@@ -109,16 +105,14 @@ func (c *Cluster) Init(req types.InitRequest) (string, error) {
|
|
c.mu.Unlock()
|
|
c.mu.Unlock()
|
|
|
|
|
|
if err := <-nr.Ready(); err != nil {
|
|
if err := <-nr.Ready(); err != nil {
|
|
|
|
+ c.mu.Lock()
|
|
|
|
+ c.nr = nil
|
|
|
|
+ c.mu.Unlock()
|
|
if !req.ForceNewCluster { // if failure on first attempt don't keep state
|
|
if !req.ForceNewCluster { // if failure on first attempt don't keep state
|
|
if err := clearPersistentState(c.root); err != nil {
|
|
if err := clearPersistentState(c.root); err != nil {
|
|
return "", err
|
|
return "", err
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if err != nil {
|
|
|
|
- c.mu.Lock()
|
|
|
|
- c.nr = nil
|
|
|
|
- c.mu.Unlock()
|
|
|
|
- }
|
|
|
|
return "", err
|
|
return "", err
|
|
}
|
|
}
|
|
state := nr.State()
|
|
state := nr.State()
|
|
@@ -166,8 +160,6 @@ func (c *Cluster) Join(req types.JoinRequest) error {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
- clearPersistentState(c.root)
|
|
|
|
-
|
|
|
|
nr, err := c.newNodeRunner(nodeStartConfig{
|
|
nr, err := c.newNodeRunner(nodeStartConfig{
|
|
RemoteAddr: req.RemoteAddrs[0],
|
|
RemoteAddr: req.RemoteAddrs[0],
|
|
ListenAddr: net.JoinHostPort(listenHost, listenPort),
|
|
ListenAddr: net.JoinHostPort(listenHost, listenPort),
|
|
@@ -193,6 +185,9 @@ func (c *Cluster) Join(req types.JoinRequest) error {
|
|
c.mu.Lock()
|
|
c.mu.Lock()
|
|
c.nr = nil
|
|
c.nr = nil
|
|
c.mu.Unlock()
|
|
c.mu.Unlock()
|
|
|
|
+ if err := clearPersistentState(c.root); err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
}
|
|
}
|
|
return err
|
|
return err
|
|
}
|
|
}
|