MCPcopy Create free account
hub / github.com/XTXMarkets/ternfs / proccessNewLeaderResponse

Method proccessNewLeaderResponse

cpp/core/LogsDB.cpp:755–775  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

753 }
754
755 void proccessNewLeaderResponse(ReplicaId fromReplicaId, LogsDBRequest& request, const NewLeaderResp& response) {
756 LOG_DEBUG(_env, "Received NEW_LEADER response %s from replicaId %s", response, fromReplicaId);
757 ALWAYS_ASSERT(_state == LeadershipState::BECOMING_NOMINEE, "In state %s Received NEW_LEADER response %s", _state, response);
758 auto& state = *_electionState;
759 ALWAYS_ASSERT(_electionState->requestIds[fromReplicaId.u8] == request.msg.id);
760 auto result = TernError(response.result);
761 switch (result) {
762 case TernError::NO_ERROR:
763 _electionState->requestIds[request.replicaId.u8] = ReqResp::CONFIRMED_REQ_ID;
764 _electionState->lastReleased = std::max(_electionState->lastReleased, response.lastReleased);
765 _reqResp.eraseRequest(request.msg.id);
766 _tryProgressToDigest();
767 break;
768 case TernError::LEADER_PREEMPTED:
769 resetLeaderElection();
770 break;
771 default:
772 LOG_ERROR(_env, "Unexpected result %s in NEW_LEADER message, %s", result, response);
773 break;
774 }
775 }
776
777 void proccessNewLeaderConfirmResponse(ReplicaId fromReplicaId, LogsDBRequest& request, const NewLeaderConfirmResp& response) {
778 ALWAYS_ASSERT(_state == LeadershipState::CONFIRMING_LEADERSHIP, "In state %s Received NEW_LEADER_CONFIRM response %s", _state, response);

Callers 1

Calls 2

eraseRequestMethod · 0.80
TernErrorEnum · 0.70

Tested by

no test coverage detected