示例#1
0
        public void FindsMajorityPerfectly(int[] matchIndices, long majority)
        {
            var s = new VolatileLeaderState();

            foreach (var i in matchIndices)
            {
                s.SetMatchIndex(Guid.NewGuid(), i);
            }

            Assert.Equal(majority, s.GetMajorityMatchIndex());
        }
示例#2
0
        private void BecomeLeader()
        {
            _leaderAddress       = null;
            State.LastVotedForId = State.Id;
            _volatileLeaderState = new VolatileLeaderState();
            var peers = _peerManager.GetPeers().ToArray();

            foreach (var peer in peers)
            {
                TheTrace.TraceInformation($"[{_meAsAPeer.ShortName}] setting up indices for peer {peer.Address}");
                _volatileLeaderState.SetNextIndex(peer.Id, _logPersister.LastIndex + 1);
                _volatileLeaderState.SetMatchIndex(peer.Id, -1L);
            }

            SetupPeerAppendLogJobs(peers);
            OnRoleChanged(_role = Role.Leader);
        }