X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FDefaultConfigParamsImpl.java;h=86867e1d040ee84396450ee72f6097093aecd70e;hb=2a89ae48921724ef5a4ab42dcff6afc74c5b0a4a;hp=dc4145358aa332febafa690baa549fbfccfa91b2;hpb=32633beca367fea1db194d310e286b14acc0e6a6;p=controller.git 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 dc4145358a..86867e1d04 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 @@ -40,10 +39,17 @@ 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 FiniteDuration isolatedLeaderCheckInterval = + new FiniteDuration(HEART_BEAT_INTERVAL.length() * 1000, HEART_BEAT_INTERVAL.unit()); + + // 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; @@ -53,15 +59,33 @@ public class DefaultConfigParamsImpl implements ConfigParams { 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; + } + + public void setElectionTimeoutFactor(long electionTimeoutFactor){ + this.electionTimeoutFactor = electionTimeoutFactor; + } + @Override public long getSnapshotBatchCount() { return snapshotBatchCount; } + @Override + public int getSnapshotDataThresholdPercentage() { + return snapshotDataThresholdPercentage; + } + + @Override public FiniteDuration getHeartBeatInterval() { return heartBeatInterval; @@ -69,8 +93,7 @@ public class DefaultConfigParamsImpl implements ConfigParams { @Override public FiniteDuration getElectionTimeOutInterval() { - // returns 2 times the heart beat interval - return getHeartBeatInterval().$times(2); + return getHeartBeatInterval().$times(electionTimeoutFactor); } @Override @@ -87,4 +110,14 @@ public class DefaultConfigParamsImpl implements ConfigParams { public int getJournalRecoveryLogBatchSize() { return journalRecoveryLogBatchSize; } + + @Override + public FiniteDuration getIsolatedCheckInterval() { + return isolatedLeaderCheckInterval; + } + + @Override + public long getElectionTimeoutFactor() { + return electionTimeoutFactor; + } }