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%2Fbehaviors%2FLeaderInstallSnapshotState.java;h=cc4caa32ebacc8511fd4ea610ea6af2af2e53bf4;hb=refs%2Fchanges%2F17%2F83317%2F7;hp=b362530d575964d3d3b5144e490518062970200f;hpb=78282f605d76598e3b0e30cfc660a3a6c38ace48;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/LeaderInstallSnapshotState.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/LeaderInstallSnapshotState.java index b362530d57..cc4caa32eb 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/LeaderInstallSnapshotState.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/behaviors/LeaderInstallSnapshotState.java @@ -30,13 +30,15 @@ public final class LeaderInstallSnapshotState implements AutoCloseable { // The index that the follower should respond with if it needs the install snapshot to be reset static final int INVALID_CHUNK_INDEX = -1; + static final int INITIAL_OFFSET = -1; + // This would be passed as the hash code of the last chunk when sending the first chunk static final int INITIAL_LAST_CHUNK_HASH_CODE = -1; private final int snapshotChunkSize; private final String logName; private ByteSource snapshotBytes; - private int offset = 0; + private int offset = INITIAL_OFFSET; // the next snapshot chunk is sent only if the replyReceivedForOffset matches offset private int replyReceivedForOffset = -1; // if replyStatus is false, the previous chunk is attempted @@ -69,17 +71,15 @@ public final class LeaderInstallSnapshotState implements AutoCloseable { LOG.debug("{}: Snapshot {} bytes, total chunks to send: {}", logName, snapshotSize, totalChunks); - replyReceivedForOffset = -1; + replyReceivedForOffset = INITIAL_OFFSET; chunkIndex = FIRST_CHUNK_INDEX; } int incrementOffset() { - // if first chunk was retried, reset offset back to initial 0 - if (offset == -1) { + // if offset is -1 doesnt matter whether it was the initial value or reset, move the offset to 0 to begin with + if (offset == INITIAL_OFFSET) { offset = 0; - } - if (replyStatus) { - // if prev chunk failed, we would want to send the same chunk again + } else { offset = offset + snapshotChunkSize; } return offset; @@ -172,9 +172,9 @@ public final class LeaderInstallSnapshotState implements AutoCloseable { closeStream(); chunkTimer.reset(); - offset = 0; + offset = INITIAL_OFFSET; replyStatus = false; - replyReceivedForOffset = INITIAL_LAST_CHUNK_HASH_CODE; + replyReceivedForOffset = INITIAL_OFFSET; chunkIndex = FIRST_CHUNK_INDEX; currentChunk = null; lastChunkHashCode = INITIAL_LAST_CHUNK_HASH_CODE;