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%2FDefaultConfigParamsImpl.java;h=3e6742c17d37c178d30c7d570490ff993c068806;hp=6432fa4811beb64ef13f6869e6e252289c2163be;hb=5c008222efa5c0af49cf8a52881a6299b1e249dc;hpb=5c7fe226016d6997f411601502589e86ad9d8f87 diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/DefaultConfigParamsImpl.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/DefaultConfigParamsImpl.java index 6432fa4811..3e6742c17d 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/DefaultConfigParamsImpl.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/DefaultConfigParamsImpl.java @@ -7,9 +7,8 @@ */ package org.opendaylight.controller.cluster.raft; -import scala.concurrent.duration.FiniteDuration; - import java.util.concurrent.TimeUnit; +import scala.concurrent.duration.FiniteDuration; /** * Default implementation of the ConfigParams @@ -18,13 +17,17 @@ import java.util.concurrent.TimeUnit; */ public class DefaultConfigParamsImpl implements ConfigParams { - private static final int SNAPSHOT_BATCH_COUNT = 100000; + private static final int SNAPSHOT_BATCH_COUNT = 20000; + + private static final int JOURNAL_RECOVERY_LOG_BATCH_SIZE = 1000; /** * The maximum election time variance */ private static final int ELECTION_TIME_MAX_VARIANCE = 100; + private static final int SNAPSHOT_CHUNK_SIZE = 2048 * 1000; //2MB + /** * The interval at which a heart beat message will be sent to the remote @@ -36,26 +39,84 @@ public class DefaultConfigParamsImpl implements ConfigParams { public static final FiniteDuration HEART_BEAT_INTERVAL = new FiniteDuration(100, TimeUnit.MILLISECONDS); + private FiniteDuration heartBeatInterval = HEART_BEAT_INTERVAL; + private long snapshotBatchCount = SNAPSHOT_BATCH_COUNT; + private int journalRecoveryLogBatchSize = JOURNAL_RECOVERY_LOG_BATCH_SIZE; + private long isolatedLeaderCheckInterval = HEART_BEAT_INTERVAL.$times(1000).toMillis(); + + // 12 is just an arbitrary percentage. This is the amount of the total memory that a raft actor's + // in-memory journal can use before it needs to snapshot + private int snapshotDataThresholdPercentage = 12; + + private long electionTimeoutFactor = 2; + + public void setHeartBeatInterval(FiniteDuration heartBeatInterval) { + this.heartBeatInterval = heartBeatInterval; + } + + public void setSnapshotBatchCount(long snapshotBatchCount) { + this.snapshotBatchCount = snapshotBatchCount; + } + + public void setSnapshotDataThresholdPercentage(int snapshotDataThresholdPercentage){ + this.snapshotDataThresholdPercentage = snapshotDataThresholdPercentage; + } + + public void setJournalRecoveryLogBatchSize(int journalRecoveryLogBatchSize) { + this.journalRecoveryLogBatchSize = journalRecoveryLogBatchSize; + } + + public void setIsolatedLeaderCheckInterval(FiniteDuration isolatedLeaderCheckInterval) { + this.isolatedLeaderCheckInterval = isolatedLeaderCheckInterval.toMillis(); + } + + public void setElectionTimeoutFactor(long electionTimeoutFactor){ + this.electionTimeoutFactor = electionTimeoutFactor; + } @Override public long getSnapshotBatchCount() { - return SNAPSHOT_BATCH_COUNT; + return snapshotBatchCount; } @Override - public FiniteDuration getHeartBeatInterval() { - return HEART_BEAT_INTERVAL; + public int getSnapshotDataThresholdPercentage() { + return snapshotDataThresholdPercentage; } + @Override + public FiniteDuration getHeartBeatInterval() { + return heartBeatInterval; + } + @Override public FiniteDuration getElectionTimeOutInterval() { - // returns 2 times the heart beat interval - return getHeartBeatInterval().$times(2); + return getHeartBeatInterval().$times(electionTimeoutFactor); } @Override public int getElectionTimeVariance() { return ELECTION_TIME_MAX_VARIANCE; } + + @Override + public int getSnapshotChunkSize() { + return SNAPSHOT_CHUNK_SIZE; + } + + @Override + public int getJournalRecoveryLogBatchSize() { + return journalRecoveryLogBatchSize; + } + + @Override + public long getIsolatedCheckIntervalInMillis() { + return isolatedLeaderCheckInterval; + } + + @Override + public long getElectionTimeoutFactor() { + return electionTimeoutFactor; + } }