use of org.opendaylight.controller.cluster.databroker.ClientBackedDataStore in project controller by opendaylight.
the class DistributedDataStoreFactory method createInstance.
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 String datastoreName = initialDatastoreContext.getDataStoreName();
LOG.info("Create data store instance of type : {}", datastoreName);
final ActorSystem actorSystem = actorSystemProvider.getActorSystem();
final DatastoreSnapshot restoreFromSnapshot = datastoreSnapshotRestore.getAndRemove(datastoreName);
Configuration config;
if (orgConfig == null) {
config = new ConfigurationImpl(DEFAULT_MODULE_SHARDS_PATH, DEFAULT_MODULES_PATH);
} else {
config = orgConfig;
}
final ClusterWrapper clusterWrapper = new ClusterWrapperImpl(actorSystem);
final DatastoreContextFactory contextFactory = introspector.newContextFactory();
// This is the potentially-updated datastore context, distinct from the initial one
final DatastoreContext datastoreContext = contextFactory.getBaseDatastoreContext();
final AbstractDataStore dataStore;
if (datastoreContext.isUseTellBasedProtocol()) {
dataStore = new ClientBackedDataStore(actorSystem, clusterWrapper, config, contextFactory, restoreFromSnapshot);
LOG.info("Data store {} is using tell-based protocol", datastoreName);
} else {
dataStore = new DistributedDataStore(actorSystem, clusterWrapper, config, contextFactory, restoreFromSnapshot);
LOG.info("Data store {} is using ask-based protocol", datastoreName);
}
updater.setListener(dataStore);
schemaService.registerSchemaContextListener(dataStore);
dataStore.setCloseable(updater);
dataStore.waitTillReady();
return dataStore;
}
Aggregations