Broadcast shouldn't give up before attempting to unicast to every memeber
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/cluster/messaging/impl/ClusterCommunicationManager.java b/core/store/dist/src/main/java/org/onlab/onos/store/cluster/messaging/impl/ClusterCommunicationManager.java
index 4db23ce..b2f679c 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/cluster/messaging/impl/ClusterCommunicationManager.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/cluster/messaging/impl/ClusterCommunicationManager.java
@@ -103,7 +103,7 @@
final ControllerNode localNode = clusterService.getLocalNode();
for (NodeId nodeId : nodes) {
if (!nodeId.equals(localNode.id())) {
- ok = unicast(message, nodeId) && ok;
+ ok = unicastUnchecked(message, nodeId) && ok;
}
}
return ok;
@@ -124,6 +124,14 @@
}
}
+ private boolean unicastUnchecked(ClusterMessage message, NodeId toNodeId) throws IOException {
+ try {
+ return unicast(message, toNodeId);
+ } catch (IOException e) {
+ return false;
+ }
+ }
+
@Override
public ClusterMessageResponse sendAndReceive(ClusterMessage message, NodeId toNodeId) throws IOException {
ControllerNode node = clusterService.getNode(toNodeId);