Wait for Leader to appear
- DatabaseClient: wait for Leader before DB access
- DatabaseManager: wait for Leader before activate
Change-Id: I5102e7cae1d33f49662bf452b1fba020173a51a0
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseManager.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseManager.java
index d84df22..645de00 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseManager.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseManager.java
@@ -10,6 +10,7 @@
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import net.kuujo.copycat.Copycat;
@@ -99,7 +100,7 @@
private boolean autoAddMember = false;
@Activate
- public void activate() {
+ public void activate() throws InterruptedException, ExecutionException {
// TODO: Not every node should be part of the consensus ring.
@@ -176,9 +177,10 @@
copycat.event(LeaderElectEvent.class).registerHandler(expirationTracker);
- copycat.start();
+ copycat.start().get();
client = new DatabaseClient(copycat);
+ client.waitForLeader();
log.info("Started.");
}