X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FConfigParams.java;h=c5c78130e8fcb22c5c614a03032a74acae40a2bc;hp=a2d30f7ae6d048495fde8cca2bddd6093c54de2e;hb=33877f41ffc3f8eb36ad8490315419b90817d26e;hpb=e08568ddef3a5455b6b477e6672b8629f6935c20 diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ConfigParams.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ConfigParams.java index a2d30f7ae6..c5c78130e8 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ConfigParams.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/ConfigParams.java @@ -7,89 +7,150 @@ */ package org.opendaylight.controller.cluster.raft; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.raft.policy.RaftPolicy; import scala.concurrent.duration.FiniteDuration; /** * Configuration Parameter interface for configuring the Raft consensus system - *

+ * + *

* Any component using this implementation might want to provide an implementation of * this interface to configure * + *

* A default implementation will be used if none is provided. * * @author Kamal Rameshan */ public interface ConfigParams { + int MEGABYTE = 1048576; + /** - * The minimum number of entries to be present in the in-memory Raft log - * for a snapshot to be taken + * Returns the minimum number of entries to be present in the in-memory Raft log for a snapshot to be taken. * - * @return long + * @return the minimum number of entries. */ long getSnapshotBatchCount(); /** - * The percentage of total memory in the in-memory Raft log before a snapshot - * is to be taken + * Returns the percentage of total memory used in the in-memory Raft log before a snapshot should be taken. * - * @return int + * @return the percentage. */ int getSnapshotDataThresholdPercentage(); + /** - * The interval at which a heart beat message will be sent to the remote - * RaftActor + * Returns the interval(in seconds) after which a snapshot should be taken during recovery. + * Negative value means don't take snapshots. * - * @return FiniteDuration + * @return the interval of recovery snapshot in seconds */ - FiniteDuration getHeartBeatInterval(); + int getRecoverySnapshotIntervalSeconds(); /** - * The interval in which a new election would get triggered if no leader is found + * Returns the interval at which a heart beat message should be sent to remote followers. * - * Normally its set to atleast twice the heart beat interval + * @return the interval as a FiniteDuration. + */ + FiniteDuration getHeartBeatInterval(); + + /** + * Returns the interval after which a new election should be triggered if no leader is available. * - * @return FiniteDuration + * @return the interval as a FiniteDuration. */ FiniteDuration getElectionTimeOutInterval(); /** - * The maximum election time variance. The election is scheduled using both - * the Election Timeout and Variance + * Returns the number by which a candidate should divide the election timeout it has calculated. This serves + * to speed up retries when elections result in a stalemate. + * + * @return the interval as a FiniteDuration. + */ + long getCandidateElectionTimeoutDivisor(); + + /** + * Returns the maximum election time variance. The election is scheduled using both the election timeout + * and variance. * - * @return int + * @return the election time variance. */ int getElectionTimeVariance(); /** - * The size (in bytes) of the snapshot chunk sent from Leader + * Returns the maximum size (in bytes) for the snapshot chunk sent from a Leader. + * + * @return the maximum size (in bytes). */ int getSnapshotChunkSize(); /** - * The number of journal log entries to batch on recovery before applying. + * Returns the maximum number of journal log entries to batch on recovery before applying. + * + * @return the maximum number of journal log entries. */ int getJournalRecoveryLogBatchSize(); /** - * The interval in which the leader needs to check itself if its isolated - * @return FiniteDuration + * Returns the interval in which the leader needs to check if its isolated. + * + * @return the interval in ms. */ 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. + * Returns the multiplication factor to be used to determine the shard election timeout. The election timeout + * is determined by multiplying the election timeout factor with the heart beat duration. + * + * @return the election timeout factor. */ long getElectionTimeoutFactor(); /** + * Returns the RaftPolicy used to determine certain Raft behaviors. + * + * @return an instance of RaftPolicy, if set, or an instance of the DefaultRaftPolicy. + */ + @NonNull RaftPolicy getRaftPolicy(); + + /** + * Returns the PeerAddressResolver. + * + * @return the PeerAddressResolver instance. + */ + @NonNull PeerAddressResolver getPeerAddressResolver(); + + /** + * Returns the custom RaftPolicy class name. + * + * @return the RaftPolicy class name or null if none set. + */ + String getCustomRaftPolicyImplementationClass(); + + /** + * Returns the directory in which to create temp files. + * + * @return the directory in which to create temp files. + */ + @NonNull String getTempFileDirectory(); + + /** + * Returns the threshold in terms of number of bytes when streaming data before it should switch from storing in + * memory to buffering to a file. + * + * @return the threshold in terms of number of bytes. + */ + int getFileBackedStreamingThreshold(); + + /** + * Returns the threshold in terms of number journal entries that we can lag behind a leader until we raise a + * 'not synced' transition. * - * @return An instance of org.opendaylight.controller.cluster.raft.policy.RaftPolicy or an instance of the - * DefaultRaftPolicy + * @return the threshold in terms of number of journal entries. */ - RaftPolicy getRaftPolicy(); + long getSyncIndexThreshold(); }