use of org.neo4j.cluster.protocol.atomicbroadcast.multipaxos.context.MultiPaxosContext in project neo4j by neo4j.
the class LearnerContextTest method shouldTrackLastKnownUpToDateAliveInstance.
@Test
public void shouldTrackLastKnownUpToDateAliveInstance() throws Exception {
// Given
Config config = mock(Config.class);
when(config.get(ClusterSettings.max_acceptors)).thenReturn(10);
MultiPaxosContext mpCtx = new MultiPaxosContext(null, Iterables.<ElectionRole>empty(), mock(ClusterConfiguration.class), null, NullLogProvider.getInstance(), null, null, null, null, null, config);
LearnerContext state = mpCtx.getLearnerContext();
// When
state.setLastKnownLearnedInstanceInCluster(1, new InstanceId(2));
state.setLastKnownLearnedInstanceInCluster(1, new InstanceId(3));
state.setLastKnownLearnedInstanceInCluster(0, new InstanceId(4));
// Then
assertThat(state.getLastKnownLearnedInstanceInCluster(), equalTo(1L));
assertThat(state.getLastKnownAliveUpToDateInstance(), equalTo(new InstanceId(3)));
}
use of org.neo4j.cluster.protocol.atomicbroadcast.multipaxos.context.MultiPaxosContext in project neo4j by neo4j.
the class ClusterInstance method newClusterInstance.
public static ClusterInstance newClusterInstance(InstanceId id, URI uri, Monitors monitors, ClusterConfiguration configuration, int maxSurvivableFailedMembers, LogProvider logging) {
MultiPaxosServerFactory factory = new MultiPaxosServerFactory(configuration, logging, monitors.newMonitor(StateMachines.Monitor.class));
ClusterInstanceInput input = new ClusterInstanceInput();
ClusterInstanceOutput output = new ClusterInstanceOutput(uri);
ObjectStreamFactory objStreamFactory = new ObjectStreamFactory();
ProverTimeouts timeouts = new ProverTimeouts(uri);
InMemoryAcceptorInstanceStore acceptorInstances = new InMemoryAcceptorInstanceStore();
Config config = mock(Config.class);
when(config.get(ClusterSettings.max_acceptors)).thenReturn(maxSurvivableFailedMembers);
DelayedDirectExecutor executor = new DelayedDirectExecutor(logging);
final MultiPaxosContext context = new MultiPaxosContext(id, Iterables.<ElectionRole, ElectionRole>iterable(new ElectionRole(ClusterConfiguration.COORDINATOR)), new ClusterConfiguration(configuration.getName(), logging, configuration.getMemberURIs()), executor, logging, objStreamFactory, objStreamFactory, acceptorInstances, timeouts, new DefaultElectionCredentialsProvider(id, new StateVerifierLastTxIdGetter(), new MemberInfoProvider()), config);
context.getClusterContext().setBoundAt(uri);
SnapshotContext snapshotContext = new SnapshotContext(context.getClusterContext(), context.getLearnerContext());
DelayedDirectExecutor taskExecutor = new DelayedDirectExecutor(logging);
ProtocolServer ps = factory.newProtocolServer(id, input, output, DIRECT_EXECUTOR, taskExecutor, timeouts, context, snapshotContext);
return new ClusterInstance(DIRECT_EXECUTOR, logging, factory, ps, context, acceptorInstances, timeouts, input, output, uri);
}
Aggregations