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%2FRaftActorContextImpl.java;h=049b91c416a5ea9fc138a6d094c25f4cc23a99c1;hb=d1d24d3742ffcda5e16a1d35e15a5627d5eb05f9;hp=eb059d60fbee1c89d6a309e5cfaedbf5bc608c64;hpb=a681e6bec3bbd7b536302ee9e083ae04b7f5ebdd;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorContextImpl.java b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorContextImpl.java index eb059d60fb..049b91c416 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorContextImpl.java +++ b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorContextImpl.java @@ -14,7 +14,10 @@ import akka.actor.ActorSelection; import akka.actor.ActorSystem; import akka.actor.Props; import akka.actor.UntypedActorContext; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Supplier; import java.util.Map; +import org.opendaylight.controller.cluster.DataPersistenceProvider; import org.slf4j.Logger; public class RaftActorContextImpl implements RaftActorContext { @@ -39,27 +42,27 @@ public class RaftActorContextImpl implements RaftActorContext { private ConfigParams configParams; - private boolean snapshotCaptureInitiated; + @VisibleForTesting + private Supplier totalMemoryRetriever; // Snapshot manager will need to be created on demand as it needs raft actor context which cannot // be passed to it in the constructor private SnapshotManager snapshotManager; - public RaftActorContextImpl(ActorRef actor, UntypedActorContext context, - String id, - ElectionTerm termInformation, long commitIndex, - long lastApplied, ReplicatedLog replicatedLog, - Map peerAddresses, ConfigParams configParams, - Logger logger) { + private final DataPersistenceProvider persistenceProvider; + + public RaftActorContextImpl(ActorRef actor, UntypedActorContext context, String id, + ElectionTerm termInformation, long commitIndex, long lastApplied, Map peerAddresses, + ConfigParams configParams, DataPersistenceProvider persistenceProvider, Logger logger) { this.actor = actor; this.context = context; this.id = id; this.termInformation = termInformation; this.commitIndex = commitIndex; this.lastApplied = lastApplied; - this.replicatedLog = replicatedLog; this.peerAddresses = peerAddresses; this.configParams = configParams; + this.persistenceProvider = persistenceProvider; this.LOG = logger; } @@ -161,10 +164,31 @@ public class RaftActorContextImpl implements RaftActorContext { peerAddresses.put(peerId, peerAddress); } + @Override public SnapshotManager getSnapshotManager() { if(snapshotManager == null){ snapshotManager = new SnapshotManager(this, LOG); } return snapshotManager; } + + @Override + public long getTotalMemory() { + return totalMemoryRetriever != null ? totalMemoryRetriever.get() : Runtime.getRuntime().totalMemory(); + } + + @Override + public void setTotalMemoryRetriever(Supplier retriever) { + totalMemoryRetriever = retriever; + } + + @Override + public boolean hasFollowers() { + return getPeerAddresses().keySet().size() > 0; + } + + @Override + public DataPersistenceProvider getPersistenceProvider() { + return persistenceProvider; + } }