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();
+    }
 }