Skip to content

Commit aee92af

Browse files
Datebasesystemyichen
Datebasesystem
authored and
yichen
committed
Fix META does not properly handle E_RETRY_EXHAUSTED error codes (#6022)
1 parent 5d43e44 commit aee92af

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

src/meta/processors/admin/AdminClient.cpp

+21
Original file line numberDiff line numberDiff line change
@@ -587,6 +587,27 @@ void AdminClient::getResponseFromLeader(std::vector<HostAddr> hosts,
587587
p.setValue(Status::Error("Leader changed!"));
588588
return;
589589
}
590+
case nebula::cpp2::ErrorCode::E_RETRY_EXHAUSTED: {
591+
// Retry exceeds storage limit, keep retrying
592+
if (retry < retryLimit) {
593+
LOG(INFO) << folly::sformat(
594+
"The request exceeds the retry limit"
595+
" inside {}, continue to retry {}, limit {}.",
596+
hosts[index].toString(),
597+
retry,
598+
retryLimit);
599+
getResponseFromLeader(std::move(hosts),
600+
index,
601+
std::move(req),
602+
std::move(remoteFunc),
603+
retry + 1,
604+
std::move(p),
605+
retryLimit);
606+
return;
607+
}
608+
p.setValue(Status::Error("Retries exceeded limit!"));
609+
return;
610+
}
590611
default: {
591612
if (retry < retryLimit) {
592613
LOG(INFO) << "Unknown code " << static_cast<int32_t>(resp.get_code())

0 commit comments

Comments
 (0)