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

Method proccessLogWriteResponse

cpp/core/LogsDB.cpp:1508–1536  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1506 }
1507
1508 void proccessLogWriteResponse(ReplicaId fromReplicaId, LogsDBRequest& request, const LogWriteResp& response) {
1509 if (!_leaderElection.isLeader()) {
1510 return;
1511 }
1512 switch ((TernError)response.result) {
1513 case TernError::NO_ERROR:
1514 break;
1515 case TernError::LEADER_PREEMPTED:
1516 _leaderElection.resetLeaderElection();
1517 return;
1518 default:
1519 LOG_ERROR(_env, "Unexpected result from LOG_WRITE response %s", response.result);
1520 return;
1521 }
1522
1523 auto logIdx = request.msg.body.getLogWrite().idx;
1524 ALWAYS_ASSERT(_metadata.getLastReleased() < logIdx);
1525 auto offset = _entriesStart + (logIdx.u64 - _metadata.getLastReleased().u64 - 1);
1526 ALWAYS_ASSERT(offset < _entriesEnd);
1527 offset &= IN_FLIGHT_MASK;
1528 ALWAYS_ASSERT(_entries[offset].idx == logIdx);
1529 auto& requestIds = _requestIds[offset];
1530 if (requestIds[fromReplicaId.u8] != request.msg.id) {
1531 LOG_ERROR(_env, "Mismatch in expected requestId in LOG_WRITE response %s", response);
1532 return;
1533 }
1534 requestIds[fromReplicaId.u8] = 0;
1535 _reqResp.eraseRequest(request.msg.id);
1536 }
1537
1538 uint64_t entriesInFlight() const {
1539 return _entriesEnd - _entriesStart;

Callers 1

Calls 4

resetLeaderElectionMethod · 0.80
eraseRequestMethod · 0.80
isLeaderMethod · 0.45
getLastReleasedMethod · 0.45

Tested by

no test coverage detected