From 7201828ab41735c6470f927d1e7c9f6248a4b039 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 12 Apr 2017 12:15:30 +0200 Subject: [PATCH] BUG-8205: use updated DatastoreContext DatastoreContext is updated by the config admin overlay, which means we cannot refer to the initial one passed in when we are deciding which data store to instantiate. This fixes up the protocol propagation and adds and initial info about which protocol is in use. Change-Id: I3c2f1a5eec1c7346fff3aca2d85609f47990723a Signed-off-by: Robert Varga (cherry picked from commit e325f9ec2d3fc6b059823d88658596be544a1828) --- .../DistributedDataStoreFactory.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) 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 e5b6f69547..b62cd3d6d3 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 @@ -22,30 +22,34 @@ public class DistributedDataStoreFactory { private static final Logger LOG = LoggerFactory.getLogger(DistributedDataStoreFactory.class); public static AbstractDataStore createInstance(final SchemaService schemaService, - final DatastoreContext datastoreContext, final DatastoreSnapshotRestore datastoreSnapshotRestore, + final DatastoreContext initialDatastoreContext, final DatastoreSnapshotRestore datastoreSnapshotRestore, final ActorSystemProvider actorSystemProvider, final BundleContext bundleContext) { - LOG.info("Create data store instance of type : {}", datastoreContext.getDataStoreName()); + final String datastoreName = initialDatastoreContext.getDataStoreName(); + LOG.info("Create data store instance of type : {}", datastoreName); - ActorSystem actorSystem = actorSystemProvider.getActorSystem(); - DatastoreSnapshot restoreFromSnapshot = datastoreSnapshotRestore.getAndRemove( - datastoreContext.getDataStoreName()); - DatastoreContextIntrospector introspector = new DatastoreContextIntrospector(datastoreContext); - DatastoreContextConfigAdminOverlay overlay = new DatastoreContextConfigAdminOverlay( + final ActorSystem actorSystem = actorSystemProvider.getActorSystem(); + final DatastoreSnapshot restoreFromSnapshot = datastoreSnapshotRestore.getAndRemove(datastoreName); + final DatastoreContextIntrospector introspector = new DatastoreContextIntrospector(initialDatastoreContext); + final DatastoreContextConfigAdminOverlay overlay = new DatastoreContextConfigAdminOverlay( introspector, bundleContext); - Configuration config = new ConfigurationImpl("module-shards.conf", "modules.conf"); - ClusterWrapper clusterWrapper = new ClusterWrapperImpl(actorSystem); - DatastoreContextFactory contextFactory = introspector.newContextFactory(); + final Configuration config = new ConfigurationImpl("module-shards.conf", "modules.conf"); + 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", datastoreContext.getDataStoreName()); + 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); } overlay.setListener(dataStore); -- 2.36.6