X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FDatastoreContext.java;h=722e23046e43f4c09d68150a2adc126de81de1bc;hp=1021ddeee7a5348f26cbaa8845059a515c537f92;hb=73e969cf365dd78772596c71e940ae44fe2f22d3;hpb=c33b2b55b2eae406df001619885a0610800cb951 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 1021ddeee7..722e23046e 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,12 +8,11 @@ package org.opendaylight.controller.cluster.datastore; -import com.google.common.base.Preconditions; - +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 scala.concurrent.duration.Duration; - +import scala.concurrent.duration.FiniteDuration; import java.util.concurrent.TimeUnit; /** @@ -27,22 +26,25 @@ public class DatastoreContext { private final Duration shardTransactionIdleTimeout; private final int operationTimeoutInSeconds; private final String dataStoreMXBeanType; + private final ConfigParams shardRaftConfig; + private final int shardTransactionCommitTimeoutInSeconds; + private final int shardTransactionCommitQueueCapacity; - public DatastoreContext() { - this.dataStoreProperties = null; - this.dataStoreMXBeanType = "DistributedDatastore"; - this.shardTransactionIdleTimeout = Duration.create(10, TimeUnit.MINUTES); - this.operationTimeoutInSeconds = 5; - } - - public DatastoreContext(String dataStoreMXBeanType, - InMemoryDOMDataStoreConfigProperties dataStoreProperties, - Duration shardTransactionIdleTimeout, - int operationTimeoutInSeconds) { + private DatastoreContext(InMemoryDOMDataStoreConfigProperties dataStoreProperties, + ConfigParams shardRaftConfig, String dataStoreMXBeanType, int operationTimeoutInSeconds, + Duration shardTransactionIdleTimeout, int shardTransactionCommitTimeoutInSeconds, + int shardTransactionCommitQueueCapacity) { + this.dataStoreProperties = dataStoreProperties; + this.shardRaftConfig = shardRaftConfig; this.dataStoreMXBeanType = dataStoreMXBeanType; - this.dataStoreProperties = Preconditions.checkNotNull(dataStoreProperties); - this.shardTransactionIdleTimeout = shardTransactionIdleTimeout; this.operationTimeoutInSeconds = operationTimeoutInSeconds; + this.shardTransactionIdleTimeout = shardTransactionIdleTimeout; + this.shardTransactionCommitTimeoutInSeconds = shardTransactionCommitTimeoutInSeconds; + this.shardTransactionCommitQueueCapacity = shardTransactionCommitQueueCapacity; + } + + public static Builder newBuilder() { + return new Builder(); } public InMemoryDOMDataStoreConfigProperties getDataStoreProperties() { @@ -60,4 +62,85 @@ public class DatastoreContext { public int getOperationTimeoutInSeconds() { return operationTimeoutInSeconds; } + + public ConfigParams getShardRaftConfig() { + return shardRaftConfig; + } + + public int getShardTransactionCommitTimeoutInSeconds() { + return shardTransactionCommitTimeoutInSeconds; + } + + public int getShardTransactionCommitQueueCapacity() { + return shardTransactionCommitQueueCapacity; + } + + public static class Builder { + private InMemoryDOMDataStoreConfigProperties dataStoreProperties; + private Duration shardTransactionIdleTimeout = Duration.create(10, TimeUnit.MINUTES); + private int operationTimeoutInSeconds = 5; + private String dataStoreMXBeanType; + private int shardTransactionCommitTimeoutInSeconds = 30; + private int shardJournalRecoveryLogBatchSize = 1000; + private int shardSnapshotBatchCount = 20000; + private int shardHeartbeatIntervalInMillis = 500; + private int shardTransactionCommitQueueCapacity = 20000; + + public Builder shardTransactionIdleTimeout(Duration shardTransactionIdleTimeout) { + this.shardTransactionIdleTimeout = shardTransactionIdleTimeout; + return this; + } + + public Builder operationTimeoutInSeconds(int operationTimeoutInSeconds) { + this.operationTimeoutInSeconds = operationTimeoutInSeconds; + return this; + } + + public Builder dataStoreMXBeanType(String dataStoreMXBeanType) { + this.dataStoreMXBeanType = dataStoreMXBeanType; + return this; + } + + public Builder dataStoreProperties(InMemoryDOMDataStoreConfigProperties dataStoreProperties) { + this.dataStoreProperties = dataStoreProperties; + return this; + } + + public Builder shardTransactionCommitTimeoutInSeconds(int shardTransactionCommitTimeoutInSeconds) { + this.shardTransactionCommitTimeoutInSeconds = shardTransactionCommitTimeoutInSeconds; + return this; + } + + public Builder shardJournalRecoveryLogBatchSize(int shardJournalRecoveryLogBatchSize) { + this.shardJournalRecoveryLogBatchSize = shardJournalRecoveryLogBatchSize; + return this; + } + + public Builder shardSnapshotBatchCount(int shardSnapshotBatchCount) { + this.shardSnapshotBatchCount = shardSnapshotBatchCount; + return this; + } + + public Builder shardHeartbeatIntervalInMillis(int shardHeartbeatIntervalInMillis) { + this.shardHeartbeatIntervalInMillis = shardHeartbeatIntervalInMillis; + return this; + } + + public Builder shardTransactionCommitQueueCapacity(int shardTransactionCommitQueueCapacity) { + this.shardTransactionCommitQueueCapacity = shardTransactionCommitQueueCapacity; + return this; + } + + public DatastoreContext build() { + DefaultConfigParamsImpl raftConfig = new DefaultConfigParamsImpl(); + raftConfig.setHeartBeatInterval(new FiniteDuration(shardHeartbeatIntervalInMillis, + TimeUnit.MILLISECONDS)); + raftConfig.setJournalRecoveryLogBatchSize(shardJournalRecoveryLogBatchSize); + raftConfig.setSnapshotBatchCount(shardSnapshotBatchCount); + + return new DatastoreContext(dataStoreProperties, raftConfig, dataStoreMXBeanType, + operationTimeoutInSeconds, shardTransactionIdleTimeout, + shardTransactionCommitTimeoutInSeconds, shardTransactionCommitQueueCapacity); + } + } }