Prechádzať zdrojové kódy

Do not wait on ack in bulksync response

The wait in bulkSyncNode was meant for bulkSync initiator. Not for
responder. Fix the incorrect code which was also waiting unnecessarily
on response which it will never get and will eventually time out.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
Jana Radhakrishnan 9 rokov pred
rodič
commit
fd72f6e318
1 zmenil súbory, kde vykonal 13 pridanie a 10 odobranie
  1. 13 10
      libnetwork/networkdb/cluster.go

+ 13 - 10
libnetwork/networkdb/cluster.go

@@ -434,16 +434,19 @@ func (nDB *NetworkDB) bulkSyncNode(networks []string, node string, unsolicited b
 		return fmt.Errorf("failed to send a TCP message during bulk sync: %v", err)
 	}
 
-	startTime := time.Now()
-	select {
-	case <-time.After(30 * time.Second):
-		logrus.Errorf("Bulk sync to node %s timed out", node)
-	case <-ch:
-		nDB.Lock()
-		delete(nDB.bulkSyncAckTbl, node)
-		nDB.Unlock()
-
-		logrus.Debugf("%s: Bulk sync to node %s took %s", nDB.config.NodeName, node, time.Now().Sub(startTime))
+	// Wait on a response only if it is unsolicited.
+	if unsolicited {
+		startTime := time.Now()
+		select {
+		case <-time.After(30 * time.Second):
+			logrus.Errorf("Bulk sync to node %s timed out", node)
+		case <-ch:
+			nDB.Lock()
+			delete(nDB.bulkSyncAckTbl, node)
+			nDB.Unlock()
+
+			logrus.Debugf("%s: Bulk sync to node %s took %s", nDB.config.NodeName, node, time.Now().Sub(startTime))
+		}
 	}
 
 	return nil