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.");
     }