This will make the DataPersistenceProvider accessible to callers that
don't have access to the RaftActor. In particular, the SnapshotManager
will need access from the capture method (subsequent patch). The
DataPersistenceProvider can't be passed to capture b/c it is also
called from AbstractLeader which doesn't have access to the
DataPersistenceProvider.
With thus change we no longer have to pass the DataPersistenceProvider to
the persist and commit methods either.
Change-Id: I187901476f2728e4b7f72238e72006c95c188b55
Signed-off-by: Tom Pantelis <tpanteli@brocade.com>
context = new RaftActorContextImpl(this.getSelf(),
this.getContext(), id, new ElectionTermImpl(delegatingPersistenceProvider, id, LOG),
-1, -1, peerAddresses,
context = new RaftActorContextImpl(this.getSelf(),
this.getContext(), id, new ElectionTermImpl(delegatingPersistenceProvider, id, LOG),
-1, -1, peerAddresses,
- (configParams.isPresent() ? configParams.get(): new DefaultConfigParamsImpl()), LOG);
+ (configParams.isPresent() ? configParams.get(): new DefaultConfigParamsImpl()),
+ delegatingPersistenceProvider, LOG);
context.setReplicatedLog(ReplicatedLogImpl.newInstance(context, delegatingPersistenceProvider, currentBehavior));
}
context.setReplicatedLog(ReplicatedLogImpl.newInstance(context, delegatingPersistenceProvider, currentBehavior));
}
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Supplier;
import java.util.Map;
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;
/**
import org.slf4j.Logger;
/**
SnapshotManager getSnapshotManager();
SnapshotManager getSnapshotManager();
+ DataPersistenceProvider getPersistenceProvider();
+
boolean hasFollowers();
long getTotalMemory();
boolean hasFollowers();
long getTotalMemory();
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Supplier;
import java.util.Map;
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 {
import org.slf4j.Logger;
public class RaftActorContextImpl implements RaftActorContext {
// be passed to it in the constructor
private SnapshotManager snapshotManager;
// be passed to it in the constructor
private SnapshotManager snapshotManager;
+ private final DataPersistenceProvider persistenceProvider;
+
public RaftActorContextImpl(ActorRef actor, UntypedActorContext context, String id,
ElectionTerm termInformation, long commitIndex, long lastApplied, Map<String, String> peerAddresses,
public RaftActorContextImpl(ActorRef actor, UntypedActorContext context, String id,
ElectionTerm termInformation, long commitIndex, long lastApplied, Map<String, String> peerAddresses,
- ConfigParams configParams, Logger logger) {
+ ConfigParams configParams, DataPersistenceProvider persistenceProvider, Logger logger) {
this.actor = actor;
this.context = context;
this.id = id;
this.actor = actor;
this.context = context;
this.id = id;
this.lastApplied = lastApplied;
this.peerAddresses = peerAddresses;
this.configParams = configParams;
this.lastApplied = lastApplied;
this.peerAddresses = peerAddresses;
this.configParams = configParams;
+ this.persistenceProvider = persistenceProvider;
public boolean hasFollowers() {
return getPeerAddresses().keySet().size() > 0;
}
public boolean hasFollowers() {
return getPeerAddresses().keySet().size() > 0;
}
+
+ @Override
+ public DataPersistenceProvider getPersistenceProvider() {
+ return persistenceProvider;
+ }
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
+import org.opendaylight.controller.cluster.DataPersistenceProvider;
+import org.opendaylight.controller.cluster.NonPersistentDataProvider;
import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload;
import org.opendaylight.controller.protobuff.messages.cluster.raft.AppendEntriesMessages;
import org.opendaylight.controller.protobuff.messages.cluster.raft.test.MockPayloadMessages;
import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload;
import org.opendaylight.controller.protobuff.messages.cluster.raft.AppendEntriesMessages;
import org.opendaylight.controller.protobuff.messages.cluster.raft.test.MockPayloadMessages;
private ConfigParams configParams;
private boolean snapshotCaptureInitiated;
private SnapshotManager snapshotManager;
private ConfigParams configParams;
private boolean snapshotCaptureInitiated;
private SnapshotManager snapshotManager;
+ private DataPersistenceProvider persistenceProvider = new NonPersistentDataProvider();
public MockRaftActorContext(){
electionTerm = new ElectionTerm() {
public MockRaftActorContext(){
electionTerm = new ElectionTerm() {
return getPeerAddresses().keySet().size() > 0;
}
return getPeerAddresses().keySet().size() > 0;
}
+ @Override
+ public DataPersistenceProvider getPersistenceProvider() {
+ return persistenceProvider;
+ }
+
+ public void setPersistenceProvider(DataPersistenceProvider persistenceProvider) {
+ this.persistenceProvider = persistenceProvider;
+ }
+
public static class SimpleReplicatedLog extends AbstractReplicatedLogImpl {
@Override public void appendAndPersist(
ReplicatedLogEntry replicatedLogEntry) {
public static class SimpleReplicatedLog extends AbstractReplicatedLogImpl {
@Override public void appendAndPersist(
ReplicatedLogEntry replicatedLogEntry) {
MockitoAnnotations.initMocks(this);
context = new RaftActorContextImpl(null, null, "test", new ElectionTermImpl(mockPersistence, "test", LOG),
MockitoAnnotations.initMocks(this);
context = new RaftActorContextImpl(null, null, "test", new ElectionTermImpl(mockPersistence, "test", LOG),
- -1, -1, Collections.<String,String>emptyMap(), configParams, LOG);
+ -1, -1, Collections.<String,String>emptyMap(), configParams, mockPersistence, LOG);
support = new RaftActorRecoverySupport(mockPersistence, context , mockBehavior, mockCohort);
support = new RaftActorRecoverySupport(mockPersistence, context , mockBehavior, mockCohort);
context = new RaftActorContextImpl(mockRaftActorRef, null, "test",
new ElectionTermImpl(mockPersistence, "test", LOG),
context = new RaftActorContextImpl(mockRaftActorRef, null, "test",
new ElectionTermImpl(mockPersistence, "test", LOG),
- -1, -1, Collections.<String,String>emptyMap(), configParams, LOG) {
+ -1, -1, Collections.<String,String>emptyMap(), configParams, mockPersistence, LOG) {
@Override
public SnapshotManager getSnapshotManager() {
return mockSnapshotManager;
@Override
public SnapshotManager getSnapshotManager() {
return mockSnapshotManager;
import org.opendaylight.controller.cluster.DataPersistenceProvider;
import org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockPayload;
import org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockReplicatedLogEntry;
import org.opendaylight.controller.cluster.DataPersistenceProvider;
import org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockPayload;
import org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockReplicatedLogEntry;
-import org.opendaylight.controller.cluster.raft.RaftActor.DeleteEntries;
+import org.opendaylight.controller.cluster.raft.base.messages.DeleteEntries;
import org.opendaylight.controller.cluster.raft.behaviors.RaftActorBehavior;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.opendaylight.controller.cluster.raft.behaviors.RaftActorBehavior;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
context = new RaftActorContextImpl(null, null, "test",
new ElectionTermImpl(mockPersistence, "test", LOG),
context = new RaftActorContextImpl(null, null, "test",
new ElectionTermImpl(mockPersistence, "test", LOG),
- -1, -1, Collections.<String,String>emptyMap(), configParams, LOG) {
+ -1, -1, Collections.<String,String>emptyMap(), configParams, mockPersistence, LOG) {
@Override
public SnapshotManager getSnapshotManager() {
return mockSnapshotManager;
@Override
public SnapshotManager getSnapshotManager() {
return mockSnapshotManager;