Просмотр исходного кода

Merge pull request #27123 from tonistiigi/fix-join-reconnect

Don’t attempt to reconnect swarm on failed join after timeout
Aaron Lehmann 8 лет назад
Родитель
Сommit
0ccbae0437
1 измененных файлов с 9 добавлено и 2 удалено
  1. 9 2
      daemon/cluster/cluster.go

+ 9 - 2
daemon/cluster/cluster.go

@@ -498,8 +498,15 @@ func (c *Cluster) Join(req types.JoinRequest) error {
 
 	select {
 	case <-time.After(swarmConnectTimeout):
-		// attempt to connect will continue in background, also reconnecting
-		go c.reconnectOnFailure(n)
+		// attempt to connect will continue in background, but reconnect only if it didn't fail
+		go func() {
+			select {
+			case <-n.Ready():
+				c.reconnectOnFailure(n)
+			case <-n.done:
+				logrus.Errorf("failed to join the cluster: %+v", c.err)
+			}
+		}()
 		return ErrSwarmJoinTimeoutReached
 	case <-n.Ready():
 		go c.reconnectOnFailure(n)