diff --git a/src/clients/meta/MetaClient.cpp b/src/clients/meta/MetaClient.cpp index 29fe45d40ca..9509887ed75 100644 --- a/src/clients/meta/MetaClient.cpp +++ b/src/clients/meta/MetaClient.cpp @@ -739,11 +739,13 @@ void MetaClient::getResponse(Request req, } auto&& resp = t.value(); - if (resp.get_code() == nebula::cpp2::ErrorCode::SUCCEEDED) { + auto code = resp.get_code(); + if (code == nebula::cpp2::ErrorCode::SUCCEEDED) { // succeeded pro.setValue(respGen(std::move(resp))); return; - } else if (resp.get_code() == nebula::cpp2::ErrorCode::E_LEADER_CHANGED) { + } else if (code == nebula::cpp2::ErrorCode::E_LEADER_CHANGED || + code == nebula::cpp2::ErrorCode::E_MACHINE_NOT_FOUND) { updateLeader(resp.get_leader()); if (retry < retryLimit) { evb->runAfterDelay( @@ -766,11 +768,9 @@ void MetaClient::getResponse(Request req, FLAGS_meta_client_retry_interval_secs * 1000); return; } - } else if (resp.get_code() == nebula::cpp2::ErrorCode::E_CLIENT_SERVER_INCOMPATIBLE) { + } else if (code == nebula::cpp2::ErrorCode::E_CLIENT_SERVER_INCOMPATIBLE) { pro.setValue(respGen(std::move(resp))); return; - } else if (resp.get_code() == nebula::cpp2::ErrorCode::E_MACHINE_NOT_FOUND) { - updateLeader(); } pro.setValue(this->handleResponse(resp)); }); // then diff --git a/src/meta/processors/BaseProcessor.h b/src/meta/processors/BaseProcessor.h index d3fc5187abc..f68a6eb48a6 100644 --- a/src/meta/processors/BaseProcessor.h +++ b/src/meta/processors/BaseProcessor.h @@ -74,7 +74,8 @@ class BaseProcessor { GraphSpaceID spaceId = kDefaultSpaceId, PartitionID partId = kDefaultPartId) { resp_.code_ref() = code; - if (code == nebula::cpp2::ErrorCode::E_LEADER_CHANGED) { + if (code == nebula::cpp2::ErrorCode::E_LEADER_CHANGED || + code == nebula::cpp2::ErrorCode::E_MACHINE_NOT_FOUND) { handleLeaderChanged(spaceId, partId); } }