func (n *nodeRunner) handleNodeExit(node *swarmnode.Node) { err := detectLockedError(node.Err(context.Background())) if err != nil { logrus.Errorf("cluster exited with error: %v", err) } n.mu.Lock() n.swarmNode = nil n.err = err close(n.done) select { case <-n.ready: n.enableReconnectWatcher() default: if n.repeatedRun { n.enableReconnectWatcher() } } n.repeatedRun = true n.mu.Unlock() }