mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-24 13:51:27 +02:00
DistributedLockManger creates a locks table if one does not exist
Change-Id: Ifa766ad441f677a4071b68d8f6caa564cf320869
This commit is contained in:
parent
705d9bc78d
commit
ac201955fa
@ -5,6 +5,7 @@ import static org.slf4j.LoggerFactory.getLogger;
|
|||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
@ -20,6 +21,8 @@ import org.onlab.onos.cluster.ClusterService;
|
|||||||
import org.onlab.onos.store.cluster.messaging.ClusterCommunicationService;
|
import org.onlab.onos.store.cluster.messaging.ClusterCommunicationService;
|
||||||
import org.onlab.onos.store.cluster.messaging.ClusterMessage;
|
import org.onlab.onos.store.cluster.messaging.ClusterMessage;
|
||||||
import org.onlab.onos.store.cluster.messaging.ClusterMessageHandler;
|
import org.onlab.onos.store.cluster.messaging.ClusterMessageHandler;
|
||||||
|
import org.onlab.onos.store.service.DatabaseAdminService;
|
||||||
|
import org.onlab.onos.store.service.DatabaseException;
|
||||||
import org.onlab.onos.store.service.DatabaseService;
|
import org.onlab.onos.store.service.DatabaseService;
|
||||||
import org.onlab.onos.store.service.Lock;
|
import org.onlab.onos.store.service.Lock;
|
||||||
import org.onlab.onos.store.service.LockEventListener;
|
import org.onlab.onos.store.service.LockEventListener;
|
||||||
@ -41,12 +44,17 @@ public class DistributedLockManager implements LockService {
|
|||||||
|
|
||||||
public static final String ONOS_LOCK_TABLE_NAME = "onos-locks";
|
public static final String ONOS_LOCK_TABLE_NAME = "onos-locks";
|
||||||
|
|
||||||
|
public static final int DEAD_LOCK_TIMEOUT_MS = 5000;
|
||||||
|
|
||||||
private final ListMultimap<String, LockRequest> locksToAcquire =
|
private final ListMultimap<String, LockRequest> locksToAcquire =
|
||||||
Multimaps.synchronizedListMultimap(LinkedListMultimap.<String, LockRequest>create());
|
Multimaps.synchronizedListMultimap(LinkedListMultimap.<String, LockRequest>create());
|
||||||
|
|
||||||
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
|
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
|
||||||
private ClusterCommunicationService clusterCommunicator;
|
private ClusterCommunicationService clusterCommunicator;
|
||||||
|
|
||||||
|
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
|
||||||
|
private DatabaseAdminService databaseAdminService;
|
||||||
|
|
||||||
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
|
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
|
||||||
private DatabaseService databaseService;
|
private DatabaseService databaseService;
|
||||||
|
|
||||||
@ -55,9 +63,22 @@ public class DistributedLockManager implements LockService {
|
|||||||
|
|
||||||
@Activate
|
@Activate
|
||||||
public void activate() {
|
public void activate() {
|
||||||
|
try {
|
||||||
|
Set<String> tableNames = databaseAdminService.listTables();
|
||||||
|
if (!tableNames.contains(ONOS_LOCK_TABLE_NAME)) {
|
||||||
|
if (databaseAdminService.createTable(ONOS_LOCK_TABLE_NAME, DEAD_LOCK_TIMEOUT_MS)) {
|
||||||
|
log.info("Created {} table.", ONOS_LOCK_TABLE_NAME);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (DatabaseException e) {
|
||||||
|
log.error("DistributedLockManager#activate failed.", e);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
|
||||||
clusterCommunicator.addSubscriber(
|
clusterCommunicator.addSubscriber(
|
||||||
DatabaseStateMachine.DATABASE_UPDATE_EVENTS,
|
DatabaseStateMachine.DATABASE_UPDATE_EVENTS,
|
||||||
new LockEventMessageListener());
|
new LockEventMessageListener());
|
||||||
|
|
||||||
log.info("Started.");
|
log.info("Started.");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user