コード例 #1
0
void ReplicationCoordinatorImpl::_onDryRunComplete(long long originalTerm) {
    invariant(_voteRequester);
    invariant(!_electionWinnerDeclarer);
    LoseElectionDryRunGuardV1 lossGuard(this);

    if (_topCoord->getTerm() != originalTerm) {
        log() << "not running for primary, we have been superceded already";
        return;
    }

    const VoteRequester::VoteRequestResult endResult = _voteRequester->getResult();

    if (endResult == VoteRequester::InsufficientVotes) {
        log() << "not running for primary, we received insufficient votes";
        return;
    } else if (endResult == VoteRequester::StaleTerm) {
        log() << "not running for primary, we have been superceded already";
        return;
    } else if (endResult != VoteRequester::SuccessfullyElected) {
        log() << "not running for primary, we received an unexpected problem";
        return;
    }

    log() << "dry election run succeeded, running for election";
    _updateTerm_incallback(originalTerm + 1);
    // Secure our vote for ourself first
    _topCoord->voteForMyselfV1();

    // Store the vote in persistent storage.
    LastVote lastVote;
    lastVote.setTerm(originalTerm + 1);
    lastVote.setCandidateId(getMyId());

    auto cbStatus = _replExecutor.scheduleDBWork(
        [this, lastVote](const ReplicationExecutor::CallbackArgs& cbData) {
            _writeLastVoteForMyElection(lastVote, cbData);
        });
    if (cbStatus.getStatus() == ErrorCodes::ShutdownInProgress) {
        return;
    }
    fassert(28769, cbStatus.getStatus());
    lossGuard.dismiss();
}
コード例 #2
0
void CDoodMemberManager::onGetMemberListResult(QString result, MemberList memberList)
{   
    if(result=="获取成员列表成功"){
        if(memberList.size()>0){
            if(memberList[0].groupid==m_ThePresentGroupid){
                setMemberSize(QString::number(memberList.size()));
                mMy_Id=getMyId();
                setMy_Type("1");
                for(size_t i=0;i<memberList.size();i++)
                {
                    mGroupid=memberList[0].groupid;
                    addMember(memberList[i]);
                    emit itemCountChanged();
                }
                emit getMemberListResult("获取成员列表成功");
            }
        }
    }
    else{
        emit getMemberListResult("获取成员列表失败");
    }
}