Skip to content
Snippets Groups Projects
Commit 0a064f74 authored by Irene Y Zhang's avatar Irene Y Zhang
Browse files

fixing one bug in TAPIR (not handling abstain) and one in IR, not correctly...

fixing one bug in TAPIR (not handling abstain) and one in IR, not correctly passing back decide result
parent f264018d
No related branches found
No related tags found
No related merge requests found
...@@ -232,7 +232,7 @@ IRClient::ConsensusSlowPath() ...@@ -232,7 +232,7 @@ IRClient::ConsensusSlowPath()
string result = pendingConsensusRequest->decide(results); string result = pendingConsensusRequest->decide(results);
// Put the result in the request to store for later retries // Put the result in the request to store for later retries
pendingConsensusRequest->request = result; pendingConsensusRequest->decideReq = result;
// Send finalize message // Send finalize message
proto::FinalizeConsensusMessage response; proto::FinalizeConsensusMessage response;
...@@ -258,7 +258,7 @@ IRClient::ResendConfirmation() ...@@ -258,7 +258,7 @@ IRClient::ResendConfirmation()
proto::FinalizeConsensusMessage response; proto::FinalizeConsensusMessage response;
response.mutable_opid()->set_clientid(clientid); response.mutable_opid()->set_clientid(clientid);
response.mutable_opid()->set_clientreqid(pendingConsensusRequest->clientReqId); response.mutable_opid()->set_clientreqid(pendingConsensusRequest->clientReqId);
response.set_result(pendingConsensusRequest->request); response.set_result(pendingConsensusRequest->decideReq);
if(transport->SendMessageToAll(this, response)) { if(transport->SendMessageToAll(this, response)) {
confirmationTimeout->Reset(); confirmationTimeout->Reset();
...@@ -419,7 +419,7 @@ IRClient::HandleConfirm(const TransportAddress &remote, ...@@ -419,7 +419,7 @@ IRClient::HandleConfirm(const TransportAddress &remote,
pendingConsensusRequest = NULL; pendingConsensusRequest = NULL;
// Return to client // Return to client
req->continuation(req->request, pendingConsensusRequest->request); req->continuation(req->request, req->decideReq);
delete req; delete req;
} }
} }
......
...@@ -77,6 +77,7 @@ protected: ...@@ -77,6 +77,7 @@ protected:
struct PendingRequest struct PendingRequest
{ {
string request; string request;
string decideReq;
uint64_t clientReqId; uint64_t clientReqId;
decide_t decide; decide_t decide;
continuation_t continuation; continuation_t continuation;
......
...@@ -166,24 +166,27 @@ Client::Prepare(Timestamp &timestamp) ...@@ -166,24 +166,27 @@ Client::Prepare(Timestamp &timestamp)
uint64_t proposed = p->GetTimestamp().getTimestamp(); uint64_t proposed = p->GetTimestamp().getTimestamp();
switch(p->GetReply()) { switch(p->GetReply()) {
case REPLY_OK: case REPLY_OK:
Debug("Prepare ok vote"); Debug("Prepare ok vote");
continue; continue;
case REPLY_FAIL: case REPLY_FAIL:
// abort! // abort!
Debug("ABORT transaction"); Debug("ABORT transaction");
return REPLY_FAIL; return REPLY_FAIL;
case REPLY_RETRY: case REPLY_RETRY:
status = REPLY_RETRY; status = REPLY_RETRY;
if (proposed > ts) { if (proposed > ts) {
ts = proposed; ts = proposed;
} }
break; break;
case REPLY_TIMEOUT: case REPLY_TIMEOUT:
status = REPLY_RETRY; status = REPLY_RETRY;
break; break;
default: case REPLY_ABSTAIN:
NOT_IMPLEMENTED(); // just ignore abstains
break;
default:
break;
} }
delete p; delete p;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment