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;
private final ConfigParams shardRaftConfig;
private final int shardTransactionCommitTimeoutInSeconds;
private final int shardTransactionCommitQueueCapacity;
+ private final Timeout shardInitializationTimeout;
+ private final Timeout shardLeaderElectionTimeout;
private DatastoreContext(InMemoryDOMDataStoreConfigProperties dataStoreProperties,
ConfigParams shardRaftConfig, String dataStoreMXBeanType, int operationTimeoutInSeconds,
Duration shardTransactionIdleTimeout, int shardTransactionCommitTimeoutInSeconds,
- int shardTransactionCommitQueueCapacity) {
+ int shardTransactionCommitQueueCapacity, Timeout shardInitializationTimeout,
+ Timeout shardLeaderElectionTimeout) {
this.dataStoreProperties = dataStoreProperties;
this.shardRaftConfig = shardRaftConfig;
this.dataStoreMXBeanType = dataStoreMXBeanType;
this.shardTransactionIdleTimeout = shardTransactionIdleTimeout;
this.shardTransactionCommitTimeoutInSeconds = shardTransactionCommitTimeoutInSeconds;
this.shardTransactionCommitQueueCapacity = shardTransactionCommitQueueCapacity;
+ this.shardInitializationTimeout = shardInitializationTimeout;
+ this.shardLeaderElectionTimeout = shardLeaderElectionTimeout;
}
public static Builder newBuilder() {
return shardTransactionCommitQueueCapacity;
}
+ public Timeout getShardInitializationTimeout() {
+ return shardInitializationTimeout;
+ }
+
+ public Timeout getShardLeaderElectionTimeout() {
+ return shardLeaderElectionTimeout;
+ }
+
public static class Builder {
private InMemoryDOMDataStoreConfigProperties dataStoreProperties;
private Duration shardTransactionIdleTimeout = Duration.create(10, TimeUnit.MINUTES);
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);
public Builder shardTransactionIdleTimeout(Duration shardTransactionIdleTimeout) {
this.shardTransactionIdleTimeout = shardTransactionIdleTimeout;
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 DatastoreContext build() {
DefaultConfigParamsImpl raftConfig = new DefaultConfigParamsImpl();
raftConfig.setHeartBeatInterval(new FiniteDuration(shardHeartbeatIntervalInMillis,
return new DatastoreContext(dataStoreProperties, raftConfig, dataStoreMXBeanType,
operationTimeoutInSeconds, shardTransactionIdleTimeout,
- shardTransactionCommitTimeoutInSeconds, shardTransactionCommitQueueCapacity);
+ shardTransactionCommitTimeoutInSeconds, shardTransactionCommitQueueCapacity,
+ shardInitializationTimeout, shardLeaderElectionTimeout);
}
}
}