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%2FDatastoreContext.java;h=2048bde613868ed7bb6ea30e8fa25776d7ecc9a4;hb=de4ef13b0a23eeec25e3cdd6461864d486707023;hp=722e23046e43f4c09d68150a2adc126de81de1bc;hpb=b3c034675957f963c5878ce1e5e183ec2de8b5e2;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContext.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContext.java index 722e23046e..2048bde613 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContext.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContext.java @@ -8,11 +8,15 @@ package org.opendaylight.controller.cluster.datastore; +import org.opendaylight.controller.cluster.datastore.config.ConfigurationReader; +import org.opendaylight.controller.cluster.datastore.config.FileConfigurationReader; import org.opendaylight.controller.cluster.raft.ConfigParams; import org.opendaylight.controller.cluster.raft.DefaultConfigParamsImpl; import org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStoreConfigProperties; +import akka.util.Timeout; import scala.concurrent.duration.Duration; import scala.concurrent.duration.FiniteDuration; + import java.util.concurrent.TimeUnit; /** @@ -29,11 +33,17 @@ public class DatastoreContext { private final ConfigParams shardRaftConfig; private final int shardTransactionCommitTimeoutInSeconds; private final int shardTransactionCommitQueueCapacity; + private final Timeout shardInitializationTimeout; + private final Timeout shardLeaderElectionTimeout; + private final boolean persistent; + private final ConfigurationReader configurationReader; private DatastoreContext(InMemoryDOMDataStoreConfigProperties dataStoreProperties, ConfigParams shardRaftConfig, String dataStoreMXBeanType, int operationTimeoutInSeconds, Duration shardTransactionIdleTimeout, int shardTransactionCommitTimeoutInSeconds, - int shardTransactionCommitQueueCapacity) { + int shardTransactionCommitQueueCapacity, Timeout shardInitializationTimeout, + Timeout shardLeaderElectionTimeout, + boolean persistent, ConfigurationReader configurationReader) { this.dataStoreProperties = dataStoreProperties; this.shardRaftConfig = shardRaftConfig; this.dataStoreMXBeanType = dataStoreMXBeanType; @@ -41,6 +51,10 @@ public class DatastoreContext { this.shardTransactionIdleTimeout = shardTransactionIdleTimeout; this.shardTransactionCommitTimeoutInSeconds = shardTransactionCommitTimeoutInSeconds; this.shardTransactionCommitQueueCapacity = shardTransactionCommitQueueCapacity; + this.shardInitializationTimeout = shardInitializationTimeout; + this.shardLeaderElectionTimeout = shardLeaderElectionTimeout; + this.persistent = persistent; + this.configurationReader = configurationReader; } public static Builder newBuilder() { @@ -75,6 +89,22 @@ public class DatastoreContext { return shardTransactionCommitQueueCapacity; } + public Timeout getShardInitializationTimeout() { + return shardInitializationTimeout; + } + + public Timeout getShardLeaderElectionTimeout() { + return shardLeaderElectionTimeout; + } + + public boolean isPersistent() { + return persistent; + } + + public ConfigurationReader getConfigurationReader() { + return configurationReader; + } + public static class Builder { private InMemoryDOMDataStoreConfigProperties dataStoreProperties; private Duration shardTransactionIdleTimeout = Duration.create(10, TimeUnit.MINUTES); @@ -85,6 +115,10 @@ public class DatastoreContext { private int shardSnapshotBatchCount = 20000; private int shardHeartbeatIntervalInMillis = 500; private int shardTransactionCommitQueueCapacity = 20000; + private Timeout shardInitializationTimeout = new Timeout(5, TimeUnit.MINUTES); + private Timeout shardLeaderElectionTimeout = new Timeout(30, TimeUnit.SECONDS); + private boolean persistent = true; + private ConfigurationReader configurationReader = new FileConfigurationReader(); public Builder shardTransactionIdleTimeout(Duration shardTransactionIdleTimeout) { this.shardTransactionIdleTimeout = shardTransactionIdleTimeout; @@ -131,6 +165,27 @@ public class DatastoreContext { return this; } + public Builder shardInitializationTimeout(long timeout, TimeUnit unit) { + this.shardInitializationTimeout = new Timeout(timeout, unit); + return this; + } + + public Builder shardLeaderElectionTimeout(long timeout, TimeUnit unit) { + this.shardLeaderElectionTimeout = new Timeout(timeout, unit); + return this; + } + + public Builder configurationReader(ConfigurationReader configurationReader){ + this.configurationReader = configurationReader; + return this; + } + + + public Builder persistent(boolean persistent){ + this.persistent = persistent; + return this; + } + public DatastoreContext build() { DefaultConfigParamsImpl raftConfig = new DefaultConfigParamsImpl(); raftConfig.setHeartBeatInterval(new FiniteDuration(shardHeartbeatIntervalInMillis, @@ -140,7 +195,9 @@ public class DatastoreContext { return new DatastoreContext(dataStoreProperties, raftConfig, dataStoreMXBeanType, operationTimeoutInSeconds, shardTransactionIdleTimeout, - shardTransactionCommitTimeoutInSeconds, shardTransactionCommitQueueCapacity); + shardTransactionCommitTimeoutInSeconds, shardTransactionCommitQueueCapacity, + shardInitializationTimeout, shardLeaderElectionTimeout, + persistent, configurationReader); } } }