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%2FFollowerLogInformationImpl.java;h=7a690d3d18be84433f9e37c874a88b277b83f7cb;hb=5fd83cdc5cf9d185a690cc40ec8acb67156c3a5f;hp=9820638ab706ba0753da5ff1d574bc657da9b962;hpb=1ccea52a9d18baf3d12c70232ba697941f71c7f6;p=controller.git 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 9820638ab7..7a690d3d18 100644 --- 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 @@ -9,64 +9,69 @@ package org.opendaylight.controller.cluster.raft; import com.google.common.base.Stopwatch; -import scala.concurrent.duration.FiniteDuration; - import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicLong; +import java.util.concurrent.atomic.AtomicLongFieldUpdater; +import scala.concurrent.duration.FiniteDuration; public class FollowerLogInformationImpl implements FollowerLogInformation { + private static final AtomicLongFieldUpdater NEXT_INDEX_UPDATER = AtomicLongFieldUpdater.newUpdater(FollowerLogInformationImpl.class, "nextIndex"); + private static final AtomicLongFieldUpdater MATCH_INDEX_UPDATER = AtomicLongFieldUpdater.newUpdater(FollowerLogInformationImpl.class, "matchIndex"); private final String id; - private final AtomicLong nextIndex; + private final Stopwatch stopwatch = new Stopwatch(); - private final AtomicLong matchIndex; + private final long followerTimeoutMillis; - private final Stopwatch stopwatch; + private volatile long nextIndex; - private final long followerTimeoutMillis; + private volatile long matchIndex; public FollowerLogInformationImpl(String id, long nextIndex, long matchIndex, FiniteDuration followerTimeoutDuration) { this.id = id; - this.nextIndex = new AtomicLong(nextIndex); - this.matchIndex = new AtomicLong(matchIndex); - this.stopwatch = new Stopwatch(); + this.nextIndex = nextIndex; + this.matchIndex = matchIndex; this.followerTimeoutMillis = followerTimeoutDuration.toMillis(); } + @Override public long incrNextIndex(){ - return nextIndex.incrementAndGet(); + return NEXT_INDEX_UPDATER.incrementAndGet(this); } @Override public long decrNextIndex() { - return nextIndex.decrementAndGet(); + return NEXT_INDEX_UPDATER.decrementAndGet(this); } @Override public void setNextIndex(long nextIndex) { - this.nextIndex.set(nextIndex); + this.nextIndex = nextIndex; } + @Override public long incrMatchIndex(){ - return matchIndex.incrementAndGet(); + return MATCH_INDEX_UPDATER.incrementAndGet(this); } @Override public void setMatchIndex(long matchIndex) { - this.matchIndex.set(matchIndex); + this.matchIndex = matchIndex; } + @Override public String getId() { return id; } - public AtomicLong getNextIndex() { + @Override + public long getNextIndex() { return nextIndex; } - public AtomicLong getMatchIndex() { + @Override + public long getMatchIndex() { return matchIndex; }