diff --git a/src/clients/storage/InternalStorageClient.cpp b/src/clients/storage/InternalStorageClient.cpp index 214f0d13db7..67e635c318b 100644 --- a/src/clients/storage/InternalStorageClient.cpp +++ b/src/clients/storage/InternalStorageClient.cpp @@ -22,6 +22,8 @@ ::nebula::cpp2::ErrorCode getErrorCode(T& tryResp) { switch (stResp.status().code()) { case Status::Code::kLeaderChanged: return nebula::cpp2::ErrorCode::E_LEADER_CHANGED; + case Status::Code::kError: + return nebula::cpp2::ErrorCode::E_RPC_FAILURE; default: LOG(ERROR) << "not impl error transform: code=" << static_cast(stResp.status().code()); @@ -70,7 +72,6 @@ void InternalStorageClient::chainUpdateEdge(cpp2::UpdateEdgeRequest& reversedReq std::move(resp).thenTry([=, p = std::move(p)](auto&& t) mutable { auto code = getErrorCode(t); VLOG(1) << "chainUpdateEdge rpc: " << apache::thrift::util::enumNameSafe(code); - ; if (code == ::nebula::cpp2::ErrorCode::E_LEADER_CHANGED) { chainUpdateEdge(reversedRequest, termOfSrc, optVersion, std::move(p)); } else { diff --git a/src/storage/transaction/ChainAddEdgesLocalProcessor.cpp b/src/storage/transaction/ChainAddEdgesLocalProcessor.cpp index 7b5f6b3622e..d1b0fdfc916 100644 --- a/src/storage/transaction/ChainAddEdgesLocalProcessor.cpp +++ b/src/storage/transaction/ChainAddEdgesLocalProcessor.cpp @@ -363,7 +363,7 @@ void ChainAddEdgesLocalProcessor::finish() { } else if (rcRemote_ == Code::E_RPC_FAILURE) { reportFailed(ResumeType::RESUME_REMOTE); } else { - lk_->setAutoUnlock(true); + // lk_->setAutoUnlock(true); } } else { // transaction manager will do the clean. diff --git a/src/storage/transaction/ChainDeleteEdgesLocalProcessor.cpp b/src/storage/transaction/ChainDeleteEdgesLocalProcessor.cpp index b48ef27c4bc..352dd55b791 100644 --- a/src/storage/transaction/ChainDeleteEdgesLocalProcessor.cpp +++ b/src/storage/transaction/ChainDeleteEdgesLocalProcessor.cpp @@ -353,7 +353,7 @@ void ChainDeleteEdgesLocalProcessor::finish() { } else if (rcRemote_ == Code::E_RPC_FAILURE) { reportFailed(ResumeType::RESUME_REMOTE); } else { - lk_->setAutoUnlock(true); + // lk_->setAutoUnlock(true); } } else { // transaction manager will do the clean. diff --git a/src/storage/transaction/ChainResumeUpdatePrimeProcessor.cpp b/src/storage/transaction/ChainResumeUpdatePrimeProcessor.cpp index f68222ee01e..dbd59342a33 100644 --- a/src/storage/transaction/ChainResumeUpdatePrimeProcessor.cpp +++ b/src/storage/transaction/ChainResumeUpdatePrimeProcessor.cpp @@ -32,6 +32,7 @@ folly::SemiFuture ChainResumeUpdatePrimeProcessor::processRemote(Code code folly::SemiFuture ChainResumeUpdatePrimeProcessor::processLocal(Code code) { VLOG(1) << "processRemote()=" << apache::thrift::util::enumNameSafe(code); + rcRemote_ = code; setErrorCode(code); auto currTerm = env_->txnMan_->getTermFromKVStore(spaceId_, localPartId_); diff --git a/src/storage/transaction/ChainUpdateEdgeLocalProcessor.cpp b/src/storage/transaction/ChainUpdateEdgeLocalProcessor.cpp index 8615cb65313..9a05e6a62ac 100644 --- a/src/storage/transaction/ChainUpdateEdgeLocalProcessor.cpp +++ b/src/storage/transaction/ChainUpdateEdgeLocalProcessor.cpp @@ -123,7 +123,7 @@ void ChainUpdateEdgeLocalProcessor::finish() { std::tie(currTerm, std::ignore) = env_->txnMan_->getTermFromKVStore(spaceId_, localPartId_); if (term_ == currTerm) { if (rcCommit_ == Code::SUCCEEDED && rcRemote_ == Code::SUCCEEDED) { - lk_->setAutoUnlock(true); + // lk_->setAutoUnlock(true); } else if (isKVStoreError(rcCommit_)) { reportFailed(ResumeType::RESUME_CHAIN); } else if (rcRemote_ == Code::E_RPC_FAILURE) { @@ -133,7 +133,7 @@ void ChainUpdateEdgeLocalProcessor::finish() { // 2. rcRemote_ has some error other than RPC_FAILURE // 2.1 we should do abort if this. // 2.2 abort() should only have kv store error - lk_->setAutoUnlock(true); + // lk_->setAutoUnlock(true); } } else { // if term changed, transaction manager will do the clean.