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(); }
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("获取成员列表失败"); } }