Improve leader election convergence
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / main / java / org / opendaylight / controller / cluster / raft / ConfigParams.java
index 433c3f7e4b832d081de375e8b792f19f1ca4caa4..c63deae7171904638c3315798b2d5332ae85a442 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.controller.cluster.raft;
 
+import javax.annotation.Nonnull;
+import org.opendaylight.controller.cluster.raft.policy.RaftPolicy;
 import scala.concurrent.duration.FiniteDuration;
 
 /**
@@ -28,6 +30,14 @@ public interface ConfigParams {
      */
     long getSnapshotBatchCount();
 
+    /**
+     * The percentage of total memory in the in-memory Raft log before a snapshot
+     * is to be taken
+     *
+     * @return int
+     */
+    int getSnapshotDataThresholdPercentage();
+
     /**
      * The interval at which a heart beat message will be sent to the remote
      * RaftActor
@@ -67,5 +77,31 @@ public interface ConfigParams {
      * The interval in which the leader needs to check itself if its isolated
      * @return FiniteDuration
      */
-    FiniteDuration getIsolatedCheckInterval();
+    long getIsolatedCheckIntervalInMillis();
+
+
+    /**
+     * The multiplication factor to be used to determine shard election timeout. The election timeout
+     * is determined by multiplying the election timeout factor with the heartbeat duration.
+     */
+    long getElectionTimeoutFactor();
+
+
+    /**
+     *
+     * @return An instance of org.opendaylight.controller.cluster.raft.policy.RaftPolicy or an instance of the
+     * DefaultRaftPolicy
+     */
+    RaftPolicy getRaftPolicy();
+
+    /**
+     * Returns the PeerAddressResolver.
+     */
+    @Nonnull PeerAddressResolver getPeerAddressResolver();
+
+    /**
+     * @return the RaftPolicy class used by this configuration
+     */
+    String getCustomRaftPolicyImplementationClass();
+
 }