commit | fb786381286c6c15d2f31b1c53a4d8c650a2c28f | [log] [tgz] |
---|---|---|
author | Madan Jampani <madan@onlab.us> | Mon Jun 13 10:25:35 2016 -0700 |
committer | Madan Jampani <madan@onlab.us> | Mon Jun 13 10:33:13 2016 -0700 |
tree | 2d2c225e9f470d5de0d6b001a4f413b1ec9fd826 | |
parent | f4363a077a4ed01355cb00f541752f7f07a97e4c [diff] [blame] |
Re-register listeners after a Copycat client recovers from a network partition Change-Id: I1b2669011e1f229f8b6edc836eb89c39ea371a97
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElector.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElector.java index 95f9d17..56511a1 100644 --- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElector.java +++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElector.java
@@ -94,6 +94,11 @@ @Override public CompletableFuture<AtomixLeaderElector> open() { return super.open().thenApply(result -> { + client.onStateChange(state -> { + if (state == CopycatClient.State.CONNECTED && isListening()) { + client.submit(new Listen()); + } + }); client.onEvent(CHANGE_SUBJECT, this::handleEvent); return result; }); @@ -183,4 +188,8 @@ public Collection<Consumer<Status>> statusChangeListeners() { return ImmutableSet.copyOf(statusChangeListeners); } + + private boolean isListening() { + return !leadershipChangeListeners.isEmpty(); + } }