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%2FDistributedDataStoreFactory.java;h=221db2faea0ff6157db7f609f9af9179aecfec6b;hb=refs%2Fchanges%2F70%2F91770%2F4;hp=2f82ac5d6415bf93f57cb771c387926e7189dea2;hpb=f8b768f558e8f77509f1e37de6da382f821c8be0;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreFactory.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreFactory.java index 2f82ac5d64..221db2faea 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreFactory.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreFactory.java @@ -17,7 +17,7 @@ import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class DistributedDataStoreFactory { +public final class DistributedDataStoreFactory { private static final Logger LOG = LoggerFactory.getLogger(DistributedDataStoreFactory.class); private static final String DEFAULT_MODULE_SHARDS_PATH = "./configuration/initial/module-shards.conf"; @@ -34,18 +34,36 @@ public class DistributedDataStoreFactory { introspector, updater, null); } + // TODO: separate out settle wait so it is better controlled public static AbstractDataStore createInstance(final DOMSchemaService schemaService, final DatastoreContext initialDatastoreContext, final DatastoreSnapshotRestore datastoreSnapshotRestore, final ActorSystemProvider actorSystemProvider, final DatastoreContextIntrospector introspector, final DatastoreContextPropertiesUpdater updater, final Configuration orgConfig) { + final AbstractDataStore dataStore = createInstance(actorSystemProvider, initialDatastoreContext, + introspector, datastoreSnapshotRestore, orgConfig); + + updater.setListener(dataStore); + + schemaService.registerSchemaContextListener(dataStore); + + dataStore.setCloseable(updater); + dataStore.waitTillReady(); + + return dataStore; + } + + public static AbstractDataStore createInstance(final ActorSystemProvider actorSystemProvider, + final DatastoreContext initialDatastoreContext, final DatastoreContextIntrospector introspector, + final DatastoreSnapshotRestore datastoreSnapshotRestore, final Configuration orgConfig) { + final String datastoreName = initialDatastoreContext.getDataStoreName(); LOG.info("Create data store instance of type : {}", datastoreName); final ActorSystem actorSystem = actorSystemProvider.getActorSystem(); - final DatastoreSnapshot restoreFromSnapshot = datastoreSnapshotRestore.getAndRemove(datastoreName); + final DatastoreSnapshot restoreFromSnapshot = datastoreSnapshotRestore.getAndRemove(datastoreName).orElse(null); - Configuration config; + final Configuration config; if (orgConfig == null) { config = new ConfigurationImpl(DEFAULT_MODULE_SHARDS_PATH, DEFAULT_MODULES_PATH); } else { @@ -67,12 +85,6 @@ public class DistributedDataStoreFactory { restoreFromSnapshot); LOG.info("Data store {} is using ask-based protocol", datastoreName); } - updater.setListener(dataStore); - - schemaService.registerSchemaContextListener(dataStore); - - dataStore.setCloseable(updater); - dataStore.waitTillReady(); return dataStore; }