Code Review
/
controller.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
BUG-8618: refactor SyncStatusTracker state
[controller.git]
/
opendaylight
/
md-sal
/
sal-akka-raft
/
src
/
main
/
java
/
org
/
opendaylight
/
controller
/
cluster
/
raft
/
FollowerLogInformationImpl.java
diff --git
a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/FollowerLogInformationImpl.java
b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/FollowerLogInformationImpl.java
index a8a33c30b20ef3c95c3f16003e3110e1227fad90..883bfbb4e4184f0cbf0843002dfa3498ca13f622 100644
(file)
--- a/
opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/FollowerLogInformationImpl.java
+++ b/
opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/FollowerLogInformationImpl.java
@@
-15,6
+15,12
@@
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.opendaylight.controller.cluster.raft.behaviors.LeaderInstallSnapshotState;
import javax.annotation.Nullable;
import org.opendaylight.controller.cluster.raft.behaviors.LeaderInstallSnapshotState;
+/**
+ * Implementation of the FollowerLogInformation interface.
+ *
+ * @author Moiz Raja
+ * @author Thomas Pantelis
+ */
public class FollowerLogInformationImpl implements FollowerLogInformation {
private final Stopwatch stopwatch = Stopwatch.createUnstarted();
public class FollowerLogInformationImpl implements FollowerLogInformation {
private final Stopwatch stopwatch = Stopwatch.createUnstarted();
@@
-40,6
+46,13
@@
public class FollowerLogInformationImpl implements FollowerLogInformation {
private LeaderInstallSnapshotState installSnapshotState;
private LeaderInstallSnapshotState installSnapshotState;
+ /**
+ * Constructs an instance.
+ *
+ * @param peerInfo the associated PeerInfo of the follower.
+ * @param matchIndex the initial match index.
+ * @param context the RaftActorContext.
+ */
public FollowerLogInformationImpl(PeerInfo peerInfo, long matchIndex, RaftActorContext context) {
this.nextIndex = context.getCommitIndex();
this.matchIndex = matchIndex;
public FollowerLogInformationImpl(PeerInfo peerInfo, long matchIndex, RaftActorContext context) {
this.nextIndex = context.getCommitIndex();
this.matchIndex = matchIndex;
@@
-53,13
+66,18
@@
public class FollowerLogInformationImpl implements FollowerLogInformation {
}
@Override
}
@Override
- public long decrNextIndex() {
- return nextIndex--;
+ public boolean decrNextIndex() {
+ if (nextIndex >= 0) {
+ nextIndex--;
+ return true;
+ }
+
+ return false;
}
@Override
public boolean setNextIndex(long nextIndex) {
}
@Override
public boolean setNextIndex(long nextIndex) {
- if(this.nextIndex != nextIndex) {
+ if
(this.nextIndex != nextIndex) {
this.nextIndex = nextIndex;
return true;
}
this.nextIndex = nextIndex;
return true;
}
@@
-68,13
+86,13
@@
public class FollowerLogInformationImpl implements FollowerLogInformation {
}
@Override
}
@Override
- public long incrMatchIndex(){
+ public long incrMatchIndex()
{
return matchIndex++;
}
@Override
public boolean setMatchIndex(long matchIndex) {
return matchIndex++;
}
@Override
public boolean setMatchIndex(long matchIndex) {
- if(this.matchIndex != matchIndex) {
+ if
(this.matchIndex != matchIndex) {
this.matchIndex = matchIndex;
return true;
}
this.matchIndex = matchIndex;
return true;
}
@@
-99,13
+117,13
@@
public class FollowerLogInformationImpl implements FollowerLogInformation {
@Override
public boolean isFollowerActive() {
@Override
public boolean isFollowerActive() {
- if(peerInfo.getVotingState() == VotingState.VOTING_NOT_INITIALIZED) {
+ if
(peerInfo.getVotingState() == VotingState.VOTING_NOT_INITIALIZED) {
return false;
}
long elapsed = stopwatch.elapsed(TimeUnit.MILLISECONDS);
return false;
}
long elapsed = stopwatch.elapsed(TimeUnit.MILLISECONDS);
- return
(stopwatch.isRunning()) &&
-
(elapsed <= context.getConfigParams().getElectionTimeOutInterval().toMillis()
);
+ return
stopwatch.isRunning()
+
&& elapsed <= context.getConfigParams().getElectionTimeOutInterval().toMillis(
);
}
@Override
}
@Override
@@
-130,25
+148,23
@@
public class FollowerLogInformationImpl implements FollowerLogInformation {
@Override
public boolean okToReplicate() {
@Override
public boolean okToReplicate() {
- if(peerInfo.getVotingState() == VotingState.VOTING_NOT_INITIALIZED) {
+ if
(peerInfo.getVotingState() == VotingState.VOTING_NOT_INITIALIZED) {
return false;
}
// Return false if we are trying to send duplicate data before the heartbeat interval
return false;
}
// Return false if we are trying to send duplicate data before the heartbeat interval
- if(getNextIndex() == lastReplicatedIndex){
- if(lastReplicatedStopwatch.elapsed(TimeUnit.MILLISECONDS) < context.getConfigParams()
- .getHeartBeatInterval().toMillis()){
- return false;
- }
+ if (getNextIndex() == lastReplicatedIndex && lastReplicatedStopwatch.elapsed(TimeUnit.MILLISECONDS)
+ < context.getConfigParams().getHeartBeatInterval().toMillis()) {
+ return false;
}
resetLastReplicated();
return true;
}
}
resetLastReplicated();
return true;
}
- private void resetLastReplicated(){
+ private void resetLastReplicated()
{
lastReplicatedIndex = getNextIndex();
lastReplicatedIndex = getNextIndex();
- if
(lastReplicatedStopwatch.isRunning())
{
+ if
(lastReplicatedStopwatch.isRunning())
{
lastReplicatedStopwatch.reset();
}
lastReplicatedStopwatch.start();
lastReplicatedStopwatch.reset();
}
lastReplicatedStopwatch.start();
@@
-182,11
+198,15
@@
public class FollowerLogInformationImpl implements FollowerLogInformation {
@Override
public void setLeaderInstallSnapshotState(@Nonnull LeaderInstallSnapshotState state) {
@Override
public void setLeaderInstallSnapshotState(@Nonnull LeaderInstallSnapshotState state) {
- this.installSnapshotState = Preconditions.checkNotNull(state);
+ if (this.installSnapshotState == null) {
+ this.installSnapshotState = Preconditions.checkNotNull(state);
+ }
}
@Override
public void clearLeaderInstallSnapshotState() {
}
@Override
public void clearLeaderInstallSnapshotState() {
+ Preconditions.checkState(installSnapshotState != null);
+ installSnapshotState.close();
installSnapshotState = null;
}
installSnapshotState = null;
}