commit | 0551d03459a0c629c8df05f3c02fc57e3cd78b0c | [log] [tgz] |
---|---|---|
author | Jordan Halterman <jordan@opennetworking.org> | Tue Jan 16 19:41:31 2018 -0800 |
committer | Ray Milkey <ray@opennetworking.org> | Tue Jan 23 11:04:30 2018 -0800 |
tree | 6667c661825c54c2c8534c785fe4fac975496c1c | |
parent | a347f2df71345c70e55511f7082efa06f170fd42 [diff] |
[ONOS-7381] Reset phi accrual failure detectors when nodes are re-activated Change-Id: I283ef9daca8dedcc1260a7e5299f559ee7a1c6e0
diff --git a/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/DistributedClusterStore.java b/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/DistributedClusterStore.java index b106763..d884c26 100644 --- a/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/DistributedClusterStore.java +++ b/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/DistributedClusterStore.java
@@ -334,6 +334,10 @@ public void accept(Endpoint sender, byte[] message) { HeartbeatMessage hb = SERIALIZER.decode(message); if (clusterMetadataService.getClusterMetadata().getNodes().contains(hb.source())) { + State state = nodeStates.get(hb.source().id()); + if (state != null && !state.isActive() && hb.state.isActive()) { + failureDetector.reset(hb.source().id()); + } failureDetector.report(hb.source().id()); updateNode(hb.source().id(), hb.state, hb.version); }
diff --git a/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/PhiAccrualFailureDetector.java b/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/PhiAccrualFailureDetector.java index 590946d..922057f 100644 --- a/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/PhiAccrualFailureDetector.java +++ b/core/store/dist/src/main/java/org/onosproject/store/cluster/impl/PhiAccrualFailureDetector.java
@@ -75,7 +75,14 @@ } } - + /** + * Resets the failure detector for the given node. + * + * @param nodeId node identifier for the node for which to reset the failure detector + */ + public void reset(NodeId nodeId) { + states.put(nodeId, new History()); + } /** * Compute phi for the specified node id.