commit | 5b54dad5b0e87a7a6134bd124c44c115b42c6d7b | [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 10:58:31 2018 -0800 |
tree | ba39f71daa364813e20d692454d1e0fc015d6016 | |
parent | cd25bd73b75812c371437eb5135da34c0d3fb4dd [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 34b2f0b..ceaec03 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.