From 06c3489bb8e9c4664ba5df4aa41ecc079e1daeff Mon Sep 17 00:00:00 2001 From: Santhosh Manohar Date: Wed, 10 May 2017 11:04:32 -0700 Subject: [PATCH] retry once on a bulk sync failure Signed-off-by: Santhosh Manohar --- libnetwork/networkdb/cluster.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/libnetwork/networkdb/cluster.go b/libnetwork/networkdb/cluster.go index 35977fcae9..d448c8caef 100644 --- a/libnetwork/networkdb/cluster.go +++ b/libnetwork/networkdb/cluster.go @@ -480,26 +480,31 @@ func (nDB *NetworkDB) bulkSyncTables() { func (nDB *NetworkDB) bulkSync(nodes []string, all bool) ([]string, error) { if !all { - // If not all, then just pick one. - nodes = nDB.mRandomNodes(1, nodes) + // Get 2 random nodes. 2nd node will be tried if the bulk sync to + // 1st node fails. + nodes = nDB.mRandomNodes(2, nodes) } if len(nodes) == 0 { return nil, nil } - logrus.Debugf("%s: Initiating bulk sync with nodes %v", nDB.config.NodeName, nodes) var err error var networks []string for _, node := range nodes { if node == nDB.config.NodeName { continue } - + logrus.Debugf("%s: Initiating bulk sync with node %v", nDB.config.NodeName, node) networks = nDB.findCommonNetworks(node) err = nDB.bulkSyncNode(networks, node, true) + // if its periodic bulksync stop after the first successful sync + if !all && err == nil { + break + } if err != nil { - err = fmt.Errorf("bulk sync failed on node %s: %v", node, err) + err = fmt.Errorf("bulk sync to node %s failed: %v", node, err) + logrus.Warn(err.Error()) } }