void ReplicationCoordinatorImpl::_writeLastVoteForMyElection( LastVote lastVote, const ReplicationExecutor::CallbackArgs& cbData) { invariant(_voteRequester); invariant(!_electionWinnerDeclarer); LoseElectionDryRunGuardV1 lossGuard(this); if (cbData.status == ErrorCodes::CallbackCanceled) { return; } invariant(cbData.txn); Status status = _externalState->storeLocalLastVoteDocument(cbData.txn, lastVote); if (!status.isOK()) { error() << "failed to store LastVote document when voting for myself: " << status; return; } auto cbStatus = _replExecutor.scheduleWork( [this, lastVote](const ReplicationExecutor::CallbackArgs& cbData) { _startVoteRequester(lastVote.getTerm()); }); if (cbStatus.getStatus() == ErrorCodes::ShutdownInProgress) { return; } fassert(28768, cbStatus.getStatus()); _replExecutor.signalEvent(_electionDryRunFinishedEvent); lossGuard.dismiss(); }
void ReplicationCoordinatorImpl::_writeLastVoteForMyElection( LastVote lastVote, const ReplicationExecutor::CallbackArgs& cbData) { invariant(_voteRequester); LoseElectionDryRunGuardV1 lossGuard(this); if (cbData.status == ErrorCodes::CallbackCanceled) { return; } invariant(cbData.txn); Status status = _externalState->storeLocalLastVoteDocument(cbData.txn, lastVote); if (!status.isOK()) { error() << "failed to store LastVote document when voting for myself: " << status; return; } _startVoteRequester(lastVote.getTerm()); _replExecutor.signalEvent(_electionDryRunFinishedEvent); lossGuard.dismiss(); }