コード例 #1
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldCalculateMajorityOfAcceptors()
        public virtual void ShouldCalculateMajorityOfAcceptors()
        {
            ProposerContextImpl proposerContext = new ProposerContextImpl(new InstanceId(1), null, null, null, null, null);

            assertEquals(1, proposerContext.GetMinimumQuorumSize(AcceptorUris(1)));
            assertEquals(2, proposerContext.GetMinimumQuorumSize(AcceptorUris(2)));
            assertEquals(2, proposerContext.GetMinimumQuorumSize(AcceptorUris(3)));
            assertEquals(3, proposerContext.GetMinimumQuorumSize(AcceptorUris(4)));
            assertEquals(3, proposerContext.GetMinimumQuorumSize(AcceptorUris(5)));
            assertEquals(4, proposerContext.GetMinimumQuorumSize(AcceptorUris(6)));
            assertEquals(4, proposerContext.GetMinimumQuorumSize(AcceptorUris(7)));
        }
コード例 #2
0
 private MultiPaxosContext(ProposerContextImpl proposerContext, AcceptorContextImpl acceptorContext, LearnerContextImpl learnerContext, HeartbeatContextImpl heartbeatContext, ElectionContextImpl electionContext, AtomicBroadcastContextImpl atomicBroadcastContext, CommonContextState commonState, PaxosInstanceStore paxosInstances, ClusterContextImpl clusterContext)
 {
     this._clusterContext         = clusterContext;
     this._proposerContext        = proposerContext;
     this._acceptorContext        = acceptorContext;
     this._learnerContext         = learnerContext;
     this._heartbeatContext       = heartbeatContext;
     this._electionContext        = electionContext;
     this._atomicBroadcastContext = atomicBroadcastContext;
     this._commonState            = commonState;
     this._paxosInstances         = paxosInstances;
 }
コード例 #3
0
        private int LimitedAcceptors(int maxAcceptors, IList <InstanceId> alive)
        {
            CommonContextState commonContextState = new CommonContextState(null, maxAcceptors);

            HeartbeatContext heartbeatContext = mock(typeof(HeartbeatContext));

            when(heartbeatContext.Alive).thenReturn(alive);
            when(heartbeatContext.GetUriForId(any(typeof(InstanceId)))).thenReturn(URI.create("http://localhost:8080"));

            // when
            ProposerContextImpl proposerContext = new ProposerContextImpl(new InstanceId(1), commonContextState, null, null, null, heartbeatContext);

            return(proposerContext.Acceptors.Count);
        }
コード例 #4
0
        public MultiPaxosContext(InstanceId me, IEnumerable <ElectionRole> roles, ClusterConfiguration configuration, Executor executor, LogProvider logging, ObjectInputStreamFactory objectInputStreamFactory, ObjectOutputStreamFactory objectOutputStreamFactory, AcceptorInstanceStore instanceStore, Timeouts timeouts, ElectionCredentialsProvider electionCredentialsProvider, Config config)
        {
            _commonState    = new CommonContextState(configuration, config.Get(ClusterSettings.max_acceptors));
            _paxosInstances = new PaxosInstanceStore();

            _heartbeatContext       = new HeartbeatContextImpl(me, _commonState, logging, timeouts, executor);
            _learnerContext         = new LearnerContextImpl(me, _commonState, logging, timeouts, _paxosInstances, instanceStore, objectInputStreamFactory, objectOutputStreamFactory, _heartbeatContext);
            _clusterContext         = new ClusterContextImpl(me, _commonState, logging, timeouts, executor, objectOutputStreamFactory, objectInputStreamFactory, _learnerContext, _heartbeatContext, config);
            _electionContext        = new ElectionContextImpl(me, _commonState, logging, timeouts, roles, _clusterContext, _heartbeatContext, electionCredentialsProvider);
            _proposerContext        = new ProposerContextImpl(me, _commonState, logging, timeouts, _paxosInstances, _heartbeatContext);
            _acceptorContext        = new AcceptorContextImpl(me, _commonState, logging, timeouts, instanceStore);
            _atomicBroadcastContext = new AtomicBroadcastContextImpl(me, _commonState, logging, timeouts, executor, _heartbeatContext);

            _heartbeatContext.setCircularDependencies(_clusterContext, _learnerContext);
        }
コード例 #5
0
        /// <summary>
        /// Create a state snapshot. The snapshot will not duplicate services, and expects the caller to duplicate
        /// <seealso cref="AcceptorInstanceStore"/>, since that is externally provided.
        /// </summary>
        public virtual MultiPaxosContext Snapshot(LogProvider logging, Timeouts timeouts, Executor executor, AcceptorInstanceStore instanceStore, ObjectInputStreamFactory objectInputStreamFactory, ObjectOutputStreamFactory objectOutputStreamFactory, ElectionCredentialsProvider electionCredentialsProvider)
        {
            CommonContextState commonStateSnapshot    = _commonState.snapshot(logging.GetLog(typeof(ClusterConfiguration)));
            PaxosInstanceStore paxosInstancesSnapshot = _paxosInstances.snapshot();

            HeartbeatContextImpl       snapshotHeartbeatContext       = _heartbeatContext.snapshot(commonStateSnapshot, logging, timeouts, executor);
            LearnerContextImpl         snapshotLearnerContext         = _learnerContext.snapshot(commonStateSnapshot, logging, timeouts, paxosInstancesSnapshot, instanceStore, objectInputStreamFactory, objectOutputStreamFactory, snapshotHeartbeatContext);
            ClusterContextImpl         snapshotClusterContext         = _clusterContext.snapshot(commonStateSnapshot, logging, timeouts, executor, objectOutputStreamFactory, objectInputStreamFactory, snapshotLearnerContext, snapshotHeartbeatContext);
            ElectionContextImpl        snapshotElectionContext        = _electionContext.snapshot(commonStateSnapshot, logging, timeouts, snapshotClusterContext, snapshotHeartbeatContext, electionCredentialsProvider);
            ProposerContextImpl        snapshotProposerContext        = _proposerContext.snapshot(commonStateSnapshot, logging, timeouts, paxosInstancesSnapshot, _heartbeatContext);
            AcceptorContextImpl        snapshotAcceptorContext        = _acceptorContext.snapshot(commonStateSnapshot, logging, timeouts, instanceStore);
            AtomicBroadcastContextImpl snapshotAtomicBroadcastContext = _atomicBroadcastContext.snapshot(commonStateSnapshot, logging, timeouts, executor, snapshotHeartbeatContext);

            snapshotHeartbeatContext.SetCircularDependencies(snapshotClusterContext, snapshotLearnerContext);

            return(new MultiPaxosContext(snapshotProposerContext, snapshotAcceptorContext, snapshotLearnerContext, snapshotHeartbeatContext, snapshotElectionContext, snapshotAtomicBroadcastContext, commonStateSnapshot, paxosInstancesSnapshot, snapshotClusterContext));
        }
コード例 #6
0
        public override bool Equals(object o)
        {
            if (this == o)
            {
                return(true);
            }
            if (o == null || this.GetType() != o.GetType())
            {
                return(false);
            }

            ProposerContextImpl that = ( ProposerContextImpl )o;

            if (_bookedInstances != null ?!_bookedInstances.Equals(that._bookedInstances) : that._bookedInstances != null)
            {
                return(false);
            }
            if (_paxosInstances != null ?!_paxosInstances.Equals(that._paxosInstances) : that._paxosInstances != null)
            {
                return(false);
            }
            return(_pendingValues != null?_pendingValues.Equals(that._pendingValues) : that._pendingValues == null);
        }