| 1167 | _lastReleased(0) {} |
| 1168 | |
| 1169 | void proccessLogWriteRequest(LogsDBRequest& request) { |
| 1170 | ALWAYS_ASSERT(request.msg.body.kind() == LogMessageKind::LOG_WRITE); |
| 1171 | const auto& writeRequest = request.msg.body.getLogWrite(); |
| 1172 | if (unlikely(request.replicaId != writeRequest.token.replica())) { |
| 1173 | LOG_ERROR(_env, "Token from replica id %s does not have matching replica id. Token: %s", request.replicaId, writeRequest.token); |
| 1174 | return; |
| 1175 | } |
| 1176 | if (unlikely(writeRequest.token < _token)) { |
| 1177 | auto& resp = _reqResp.newResponse(request.replicaId, request.msg.id); |
| 1178 | auto& writeResponse = resp.msg.body.setLogWrite(); |
| 1179 | writeResponse.result = TernError::LEADER_PREEMPTED; |
| 1180 | return; |
| 1181 | } |
| 1182 | if (unlikely(_token < writeRequest.token )) { |
| 1183 | writeBatch(); |
| 1184 | _token = writeRequest.token; |
| 1185 | } |
| 1186 | _requests.emplace_back(&request); |
| 1187 | _entries.emplace_back(); |
| 1188 | auto& entry = _entries.back(); |
| 1189 | entry.idx = writeRequest.idx; |
| 1190 | entry.value = writeRequest.value.els; |
| 1191 | if (_lastReleased < writeRequest.lastReleased) { |
| 1192 | _lastReleased = writeRequest.lastReleased; |
| 1193 | } |
| 1194 | } |
| 1195 | |
| 1196 | void proccessReleaseRequest(ReplicaId fromReplicaId, uint64_t requestId, const ReleaseReq& request) { |
| 1197 | if (unlikely(fromReplicaId != request.token.replica())) { |
no test coverage detected