X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyang%2Fconfig%2Fdistributed_datastore_provider%2FDistributedOperationalDataStoreProviderModule.java;h=0597aba5e2101485b363a24a4539241551dc7a21;hb=925cb4a228d0fda99c7bfeb432eb25285a223887;hp=3183527eb032d287623c03e1a4fc57bca9252f2d;hpb=879a57936375ca3dec48c5bf52b0b5988c807bae;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModule.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModule.java index 3183527eb0..0597aba5e2 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModule.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/config/yang/config/distributed_datastore_provider/DistributedOperationalDataStoreProviderModule.java @@ -1,29 +1,33 @@ -package org.opendaylight.controller.config.yang.config.distributed_datastore_provider; +/* + * Copyright (c) 2014, 2015 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ -import java.util.concurrent.TimeUnit; +package org.opendaylight.controller.config.yang.config.distributed_datastore_provider; import org.opendaylight.controller.cluster.datastore.DatastoreContext; -import org.opendaylight.controller.cluster.datastore.DistributedDataStoreFactory; -import org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStoreConfigProperties; +import org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface; +import org.opendaylight.controller.config.api.DependencyResolver; +import org.opendaylight.controller.config.api.ModuleIdentifier; +import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.osgi.framework.BundleContext; -import scala.concurrent.duration.Duration; - -public class DistributedOperationalDataStoreProviderModule extends - org.opendaylight.controller.config.yang.config.distributed_datastore_provider.AbstractDistributedOperationalDataStoreProviderModule { +public class DistributedOperationalDataStoreProviderModule + extends AbstractDistributedOperationalDataStoreProviderModule { private BundleContext bundleContext; - public DistributedOperationalDataStoreProviderModule( - org.opendaylight.controller.config.api.ModuleIdentifier identifier, - org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { + public DistributedOperationalDataStoreProviderModule(ModuleIdentifier identifier, + DependencyResolver dependencyResolver) { super(identifier, dependencyResolver); } - public DistributedOperationalDataStoreProviderModule( - org.opendaylight.controller.config.api.ModuleIdentifier identifier, - org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, - org.opendaylight.controller.config.yang.config.distributed_datastore_provider.DistributedOperationalDataStoreProviderModule oldModule, - java.lang.AutoCloseable oldInstance) { + public DistributedOperationalDataStoreProviderModule(ModuleIdentifier identifier, + DependencyResolver dependencyResolver,DistributedOperationalDataStoreProviderModule oldModule, + AutoCloseable oldInstance) { super(identifier, dependencyResolver, oldModule, oldInstance); } @@ -32,29 +36,65 @@ public class DistributedOperationalDataStoreProviderModule extends // add custom validation form module attributes here. } + @Override + public boolean canReuseInstance(AbstractDistributedOperationalDataStoreProviderModule oldModule) { + return true; + } + @Override public java.lang.AutoCloseable createInstance() { + // The DistributedOperDataStore is provided via blueprint so wait for and return it here for + // backwards compatibility + WaitingServiceTracker tracker = WaitingServiceTracker.create( + DistributedDataStoreInterface.class, bundleContext, "(type=distributed-operational)"); + DistributedDataStoreInterface delegate = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES); + return new ForwardingDistributedDataStore(delegate, tracker); + } - OperationalProperties props = getOperationalProperties(); - if(props == null) { + public static DatastoreContext newDatastoreContext() { + return newDatastoreContext(null); + } + + private static DatastoreContext newDatastoreContext(OperationalProperties inProps) { + OperationalProperties props = inProps; + if (props == null) { props = new OperationalProperties(); } - DatastoreContext datastoreContext = new DatastoreContext("DistributedOperationalDatastore", - InMemoryDOMDataStoreConfigProperties.create( - props.getMaxShardDataChangeExecutorPoolSize().getValue().intValue(), - props.getMaxShardDataChangeExecutorQueueSize().getValue().intValue(), - props.getMaxShardDataChangeListenerQueueSize().getValue().intValue(), - props.getMaxShardDataStoreExecutorQueueSize().getValue().intValue()), - Duration.create(props.getShardTransactionIdleTimeoutInMinutes().getValue(), - TimeUnit.MINUTES), - props.getOperationTimeoutInSeconds().getValue(), - props.getShardJournalRecoveryLogBatchSize().getValue().intValue(), - props.getShardSnapshotBatchCount().getValue().intValue(), - props.getShardHearbeatIntervalInMillis().getValue()); - - return DistributedDataStoreFactory.createInstance("operational", - getOperationalSchemaServiceDependency(), datastoreContext, bundleContext); + return DatastoreContext.newBuilder() + .logicalStoreType(LogicalDatastoreType.OPERATIONAL) + .maxShardDataChangeExecutorPoolSize(props.getMaxShardDataChangeExecutorPoolSize().getValue().intValue()) + .maxShardDataChangeExecutorQueueSize(props.getMaxShardDataChangeExecutorQueueSize() + .getValue().intValue()) + .maxShardDataChangeListenerQueueSize(props.getMaxShardDataChangeListenerQueueSize() + .getValue().intValue()) + .maxShardDataStoreExecutorQueueSize(props.getMaxShardDataStoreExecutorQueueSize().getValue().intValue()) + .shardTransactionIdleTimeoutInMinutes(props.getShardTransactionIdleTimeoutInMinutes().getValue()) + .operationTimeoutInSeconds(props.getOperationTimeoutInSeconds().getValue()) + .shardJournalRecoveryLogBatchSize(props.getShardJournalRecoveryLogBatchSize() + .getValue().intValue()) + .shardSnapshotBatchCount(props.getShardSnapshotBatchCount().getValue().intValue()) + .shardSnapshotDataThresholdPercentage(props.getShardSnapshotDataThresholdPercentage() + .getValue().intValue()) + .shardHeartbeatIntervalInMillis(props.getShardHeartbeatIntervalInMillis().getValue()) + .shardInitializationTimeoutInSeconds(props.getShardInitializationTimeoutInSeconds().getValue()) + .shardLeaderElectionTimeoutInSeconds(props.getShardLeaderElectionTimeoutInSeconds().getValue()) + .shardTransactionCommitTimeoutInSeconds( + props.getShardTransactionCommitTimeoutInSeconds().getValue().intValue()) + .shardTransactionCommitQueueCapacity( + props.getShardTransactionCommitQueueCapacity().getValue().intValue()) + .persistent(props.getPersistent().booleanValue()) + .shardIsolatedLeaderCheckIntervalInMillis( + props.getShardIsolatedLeaderCheckIntervalInMillis().getValue()) + .shardElectionTimeoutFactor(props.getShardElectionTimeoutFactor().getValue()) + .transactionCreationInitialRateLimit(props.getTransactionCreationInitialRateLimit().getValue()) + .shardBatchedModificationCount(props.getShardBatchedModificationCount().getValue().intValue()) + .shardCommitQueueExpiryTimeoutInSeconds( + props.getShardCommitQueueExpiryTimeoutInSeconds().getValue().intValue()) + .transactionDebugContextEnabled(props.getTransactionDebugContextEnabled()) + .customRaftPolicyImplementation(props.getCustomRaftPolicyImplementation()) + .shardSnapshotChunkSize(props.getShardSnapshotChunkSize().getValue().intValue()) + .build(); } public void setBundleContext(BundleContext bundleContext) {