Madan Jampani

Added a distributed leadership manager implementation on top of consistent map.

Change-Id: I3f3c6114df72e3ab033ba39c8608ac4ae11e5272
...@@ -53,7 +53,7 @@ public class ConsistentMapImpl<K, V> implements ConsistentMap<K, V> { ...@@ -53,7 +53,7 @@ public class ConsistentMapImpl<K, V> implements ConsistentMap<K, V> {
53 private final DatabaseProxy<String, byte[]> proxy; 53 private final DatabaseProxy<String, byte[]> proxy;
54 private final Serializer serializer; 54 private final Serializer serializer;
55 55
56 - private static final int OPERATION_TIMEOUT_MILLIS = 1000; 56 + private static final int OPERATION_TIMEOUT_MILLIS = 5000;
57 private static final String ERROR_NULL_KEY = "Key cannot be null"; 57 private static final String ERROR_NULL_KEY = "Key cannot be null";
58 private static final String ERROR_NULL_VALUE = "Null values are not allowed"; 58 private static final String ERROR_NULL_VALUE = "Null values are not allowed";
59 59
......
...@@ -17,11 +17,13 @@ ...@@ -17,11 +17,13 @@
17 package org.onosproject.store.consistent.impl; 17 package org.onosproject.store.consistent.impl;
18 18
19 import com.google.common.collect.Sets; 19 import com.google.common.collect.Sets;
20 +
20 import net.kuujo.copycat.cluster.ClusterConfig; 21 import net.kuujo.copycat.cluster.ClusterConfig;
21 import net.kuujo.copycat.cluster.Member; 22 import net.kuujo.copycat.cluster.Member;
22 import net.kuujo.copycat.log.FileLog; 23 import net.kuujo.copycat.log.FileLog;
23 import net.kuujo.copycat.netty.NettyTcpProtocol; 24 import net.kuujo.copycat.netty.NettyTcpProtocol;
24 import net.kuujo.copycat.protocol.Consistency; 25 import net.kuujo.copycat.protocol.Consistency;
26 +
25 import org.apache.felix.scr.annotations.Activate; 27 import org.apache.felix.scr.annotations.Activate;
26 import org.apache.felix.scr.annotations.Component; 28 import org.apache.felix.scr.annotations.Component;
27 import org.apache.felix.scr.annotations.Deactivate; 29 import org.apache.felix.scr.annotations.Deactivate;
...@@ -44,6 +46,8 @@ import java.io.IOException; ...@@ -44,6 +46,8 @@ import java.io.IOException;
44 import java.util.List; 46 import java.util.List;
45 import java.util.Map; 47 import java.util.Map;
46 import java.util.Set; 48 import java.util.Set;
49 +import java.util.concurrent.CountDownLatch;
50 +import java.util.concurrent.TimeUnit;
47 import java.util.stream.Collectors; 51 import java.util.stream.Collectors;
48 52
49 import static org.slf4j.LoggerFactory.getLogger; 53 import static org.slf4j.LoggerFactory.getLogger;
...@@ -60,6 +64,7 @@ public class DatabaseManager implements StorageService, StorageAdminService { ...@@ -60,6 +64,7 @@ public class DatabaseManager implements StorageService, StorageAdminService {
60 public static final int COPYCAT_TCP_PORT = 7238; // 7238 = RAFT 64 public static final int COPYCAT_TCP_PORT = 7238; // 7238 = RAFT
61 private static final String CONFIG_DIR = "../config"; 65 private static final String CONFIG_DIR = "../config";
62 private static final String PARTITION_DEFINITION_FILE = "tablets.json"; 66 private static final String PARTITION_DEFINITION_FILE = "tablets.json";
67 + private static final int DATABASE_STARTUP_TIMEOUT_SEC = 60;
63 68
64 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 69 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
65 protected ClusterService clusterService; 70 protected ClusterService clusterService;
...@@ -131,13 +136,23 @@ public class DatabaseManager implements StorageService, StorageAdminService { ...@@ -131,13 +136,23 @@ public class DatabaseManager implements StorageService, StorageAdminService {
131 136
132 partitionedDatabase = PartitionedDatabaseManager.create("onos-store", clusterConfig, databaseConfig); 137 partitionedDatabase = PartitionedDatabaseManager.create("onos-store", clusterConfig, databaseConfig);
133 138
139 + CountDownLatch latch = new CountDownLatch(1);
134 partitionedDatabase.open().whenComplete((db, error) -> { 140 partitionedDatabase.open().whenComplete((db, error) -> {
135 if (error != null) { 141 if (error != null) {
136 log.warn("Failed to open database.", error); 142 log.warn("Failed to open database.", error);
137 } else { 143 } else {
144 + latch.countDown();
138 log.info("Successfully opened database."); 145 log.info("Successfully opened database.");
139 } 146 }
140 }); 147 });
148 + try {
149 + if (!latch.await(DATABASE_STARTUP_TIMEOUT_SEC, TimeUnit.SECONDS)) {
150 + log.warn("Timeed out watiing for database to initialize.");
151 + }
152 + } catch (InterruptedException e) {
153 + Thread.currentThread().interrupt();
154 + log.warn("Failed to complete database initialization.");
155 + }
141 log.info("Started"); 156 log.info("Started");
142 } 157 }
143 158
......