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=c83f90ec430e9d4ec0228b53e65b4cd9d9d726b4;hb=HEAD;hp=4185754da462651e8c121f5b6d3cf312f5f5ace6;hpb=f9bfd1462a1cb57a34a4e567c1931b629df901ea;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 4185754da4..c83f90ec43 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 @@ -11,9 +11,9 @@ import static com.google.common.base.Preconditions.checkArgument; import static java.util.Objects.requireNonNull; import com.google.common.base.Strings; -import com.google.common.base.Supplier; import com.google.common.base.Suppliers; import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.raft.policy.DefaultRaftPolicy; import org.opendaylight.controller.cluster.raft.policy.RaftPolicy; @@ -29,6 +29,10 @@ public class DefaultConfigParamsImpl implements ConfigParams { private static final Logger LOG = LoggerFactory.getLogger(DefaultConfigParamsImpl.class); private static final int SNAPSHOT_BATCH_COUNT = 20000; + /** + * Interval after which a snapshot should be taken during the recovery process. 0 if never. + */ + private static final int RECOVERY_SNAPSHOT_INTERVAL_SECONDS = 0; private static final int JOURNAL_RECOVERY_LOG_BATCH_SIZE = 1000; @@ -37,7 +41,7 @@ public class DefaultConfigParamsImpl implements ConfigParams { */ private static final int ELECTION_TIME_MAX_VARIANCE = 100; - private static final int SNAPSHOT_CHUNK_SIZE = 2048 * 1000; //2MB + private static final int MAXIMUM_MESSAGE_SLICE_SIZE = 480 * 1024; // 480KiB /** @@ -56,6 +60,7 @@ public class DefaultConfigParamsImpl implements ConfigParams { private FiniteDuration heartBeatInterval = HEART_BEAT_INTERVAL; private long snapshotBatchCount = SNAPSHOT_BATCH_COUNT; private int journalRecoveryLogBatchSize = JOURNAL_RECOVERY_LOG_BATCH_SIZE; + private int recoverySnapshotIntervalSeconds = RECOVERY_SNAPSHOT_INTERVAL_SECONDS; private long isolatedLeaderCheckInterval = HEART_BEAT_INTERVAL.$times(1000).toMillis(); private FiniteDuration electionTimeOutInterval; @@ -63,7 +68,11 @@ public class DefaultConfigParamsImpl implements ConfigParams { // in-memory journal can use before it needs to snapshot private int snapshotDataThresholdPercentage = 12; - private int snapshotChunkSize = SNAPSHOT_CHUNK_SIZE; + // max size of in-memory journal in MB + // 0 means direct threshold if disabled + private int snapshotDataThreshold = 0; + + private int maximumMessageSliceSize = MAXIMUM_MESSAGE_SLICE_SIZE; private long electionTimeoutFactor = 2; private long candidateElectionTimeoutDivisor = 1; @@ -86,12 +95,21 @@ public class DefaultConfigParamsImpl implements ConfigParams { this.snapshotBatchCount = snapshotBatchCount; } + public void setRecoverySnapshotIntervalSeconds(final int recoverySnapshotInterval) { + checkArgument(recoverySnapshotInterval >= 0); + recoverySnapshotIntervalSeconds = recoverySnapshotInterval; + } + public void setSnapshotDataThresholdPercentage(final int snapshotDataThresholdPercentage) { this.snapshotDataThresholdPercentage = snapshotDataThresholdPercentage; } - public void setSnapshotChunkSize(final int snapshotChunkSize) { - this.snapshotChunkSize = snapshotChunkSize; + public void setSnapshotDataThreshold(final int snapshotDataThreshold) { + this.snapshotDataThreshold = snapshotDataThreshold; + } + + public void setMaximumMessageSliceSize(final int maximumMessageSliceSize) { + this.maximumMessageSliceSize = maximumMessageSliceSize; } public void setJournalRecoveryLogBatchSize(final int journalRecoveryLogBatchSize) { @@ -138,6 +156,16 @@ public class DefaultConfigParamsImpl implements ConfigParams { return snapshotDataThresholdPercentage; } + @Override + public int getSnapshotDataThreshold() { + return snapshotDataThreshold; + } + + @Override + public int getRecoverySnapshotIntervalSeconds() { + return recoverySnapshotIntervalSeconds; + } + @Override public FiniteDuration getHeartBeatInterval() { return heartBeatInterval; @@ -163,8 +191,8 @@ public class DefaultConfigParamsImpl implements ConfigParams { } @Override - public int getSnapshotChunkSize() { - return snapshotChunkSize; + public int getMaximumMessageSliceSize() { + return maximumMessageSliceSize; } @Override