X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FDistributedDataStore.java;h=a925e93566e9dcff73fd33f1dab458dc2028cfdf;hb=a47dd7a5d21ca68804a6d0e2e3ca765f223c2ef4;hp=fe321d4cd2808bff7c6be29b67222b4876c8b2fe;hpb=d0621d28e507d9f6c0b9445d197f90253d34725d;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java index fe321d4cd2..a925e93566 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStore.java @@ -76,28 +76,14 @@ public class DistributedDataStore implements DistributedDataStoreInterface, Sche private final TransactionContextFactory txContextFactory; - public DistributedDataStore(ActorSystem actorSystem, ClusterWrapper cluster, - Configuration configuration, DatastoreContextFactory datastoreContextFactory, - DatastoreSnapshot restoreFromSnapshot) { + public DistributedDataStore(final ActorSystem actorSystem, final ClusterWrapper cluster, + final Configuration configuration, final DatastoreContextFactory datastoreContextFactory, + final DatastoreSnapshot restoreFromSnapshot) { Preconditions.checkNotNull(actorSystem, "actorSystem should not be null"); Preconditions.checkNotNull(cluster, "cluster should not be null"); Preconditions.checkNotNull(configuration, "configuration should not be null"); Preconditions.checkNotNull(datastoreContextFactory, "datastoreContextFactory should not be null"); - final Props clientProps = DistributedDataStoreClientActor.props(cluster.getCurrentMemberName(), - datastoreContextFactory.getBaseDatastoreContext().getDataStoreName()); - final ActorRef clientActor = actorSystem.actorOf(clientProps); - try { - client = DistributedDataStoreClientActor.getDistributedDataStoreClient(clientActor, 30, TimeUnit.SECONDS); - } catch (Exception e) { - LOG.error("Failed to get actor for {}", clientProps, e); - clientActor.tell(PoisonPill.getInstance(), ActorRef.noSender()); - throw Throwables.propagate(e); - } - - identifier = client.getIdentifier(); - LOG.debug("Distributed data store client {} started", identifier); - String shardManagerId = ShardManagerIdentifier.builder() .type(datastoreContextFactory.getBaseDatastoreContext().getDataStoreName()).build().toString(); @@ -115,10 +101,24 @@ public class DistributedDataStore implements DistributedDataStoreInterface, Sche actorContext = new ActorContext(actorSystem, createShardManager(actorSystem, creator, shardDispatcher, shardManagerId), cluster, configuration, datastoreContextFactory.getBaseDatastoreContext(), primaryShardInfoCache); + final Props clientProps = DistributedDataStoreClientActor.props(cluster.getCurrentMemberName(), + datastoreContextFactory.getBaseDatastoreContext().getDataStoreName(), actorContext); + final ActorRef clientActor = actorSystem.actorOf(clientProps); + try { + client = DistributedDataStoreClientActor.getDistributedDataStoreClient(clientActor, 30, TimeUnit.SECONDS); + } catch (Exception e) { + LOG.error("Failed to get actor for {}", clientProps, e); + clientActor.tell(PoisonPill.getInstance(), ActorRef.noSender()); + throw Throwables.propagate(e); + } + + identifier = client.getIdentifier(); + LOG.debug("Distributed data store client {} started", identifier); + this.waitTillReadyTimeInMillis = actorContext.getDatastoreContext().getShardLeaderElectionTimeout().duration().toMillis() * READY_WAIT_FACTOR; - this.txContextFactory = TransactionContextFactory.create(actorContext); + this.txContextFactory = new TransactionContextFactory(actorContext, identifier); datastoreConfigMXBean = new DatastoreConfigurationMXBeanImpl( datastoreContextFactory.getBaseDatastoreContext().getDataStoreMXBeanType()); @@ -131,16 +131,16 @@ public class DistributedDataStore implements DistributedDataStoreInterface, Sche } @VisibleForTesting - DistributedDataStore(ActorContext actorContext, ClientIdentifier identifier) { + DistributedDataStore(final ActorContext actorContext, final ClientIdentifier identifier) { this.actorContext = Preconditions.checkNotNull(actorContext, "actorContext should not be null"); this.client = null; this.identifier = Preconditions.checkNotNull(identifier); - this.txContextFactory = TransactionContextFactory.create(actorContext); + this.txContextFactory = new TransactionContextFactory(actorContext, identifier); this.waitTillReadyTimeInMillis = actorContext.getDatastoreContext().getShardLeaderElectionTimeout().duration().toMillis() * READY_WAIT_FACTOR; } - public void setCloseable(AutoCloseable closeable) { + public void setCloseable(final AutoCloseable closeable) { this.closeable = closeable; } @@ -148,8 +148,8 @@ public class DistributedDataStore implements DistributedDataStoreInterface, Sche @Override public >> ListenerRegistration registerChangeListener( - final YangInstanceIdentifier path, L listener, - AsyncDataBroker.DataChangeScope scope) { + final YangInstanceIdentifier path, final L listener, + final AsyncDataBroker.DataChangeScope scope) { Preconditions.checkNotNull(path, "path should not be null"); Preconditions.checkNotNull(listener, "listener should not be null"); @@ -166,7 +166,7 @@ public class DistributedDataStore implements DistributedDataStoreInterface, Sche } @Override - public ListenerRegistration registerTreeChangeListener(YangInstanceIdentifier treeId, L listener) { + public ListenerRegistration registerTreeChangeListener(final YangInstanceIdentifier treeId, final L listener) { Preconditions.checkNotNull(treeId, "treeId should not be null"); Preconditions.checkNotNull(listener, "listener should not be null"); @@ -183,7 +183,7 @@ public class DistributedDataStore implements DistributedDataStoreInterface, Sche @Override public DOMDataTreeCommitCohortRegistration registerCommitCohort( - DOMDataTreeIdentifier subtree, C cohort) { + final DOMDataTreeIdentifier subtree, final C cohort) { YangInstanceIdentifier treeId = Preconditions.checkNotNull(subtree, "subtree should not be null").getRootIdentifier(); Preconditions.checkNotNull(cohort, "listener should not be null"); @@ -220,12 +220,12 @@ public class DistributedDataStore implements DistributedDataStoreInterface, Sche } @Override - public void onGlobalContextUpdated(SchemaContext schemaContext) { + public void onGlobalContextUpdated(final SchemaContext schemaContext) { actorContext.setSchemaContext(schemaContext); } @Override - public void onDatastoreContextUpdated(DatastoreContextFactory contextFactory) { + public void onDatastoreContextUpdated(final DatastoreContextFactory contextFactory) { LOG.info("DatastoreContext updated for data store {}", actorContext.getDataStoreName()); actorContext.setDatastoreContext(contextFactory); @@ -278,8 +278,8 @@ public class DistributedDataStore implements DistributedDataStoreInterface, Sche } } - private static ActorRef createShardManager(ActorSystem actorSystem, ShardManagerCreator creator, - String shardDispatcher, String shardManagerId) { + private static ActorRef createShardManager(final ActorSystem actorSystem, final ShardManagerCreator creator, + final String shardDispatcher, final String shardManagerId) { Exception lastException = null; for(int i=0;i<100;i++) {