Pārlūkot izejas kodu

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

Don’t attempt to reconnect swarm on failed join after timeout
Aaron Lehmann 8 gadi atpakaļ
vecāks
revīzija
0ccbae0437
1 mainītis faili ar 9 papildinājumiem un 2 dzēšanām
  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)