diff options
author | ivanmorozov <[email protected]> | 2023-10-10 08:12:21 +0300 |
---|---|---|
committer | ivanmorozov <[email protected]> | 2023-10-10 08:31:35 +0300 |
commit | 98b04d640fe173e8cd13f362753591aee0d68f7d (patch) | |
tree | f2356f94ae4485d9aa04676644bc6557a519ed60 | |
parent | f2eae3991144dd8f5f94d26dc042aa5566e873b0 (diff) |
KIKIMR-19215: process error in case many retries TEvScanError
-rw-r--r-- | ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp b/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp index 07eb0cf8875..d92a50f04ce 100644 --- a/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp +++ b/ydb/core/kqp/compute_actor/kqp_scan_fetcher_actor.cpp @@ -193,7 +193,6 @@ void TKqpScanFetcherActor::HandleExecute(TEvKqpCompute::TEvScanError::TPtr& ev) YQL_ENSURE(state->Generation == msg.GetGeneration()); - if (state->State == EShardState::Starting) { if (FindSchemeErrorInIssues(status, issues)) { return EnqueueResolveShard(state); @@ -208,6 +207,13 @@ void TKqpScanFetcherActor::HandleExecute(TEvKqpCompute::TEvScanError::TPtr& ev) InFlightShards.ClearAckState(state); state->ResetRetry(); ++TotalRetries; + if (state->TotalRetries >= MAX_SHARD_RETRIES || TotalRetries >= MAX_TOTAL_SHARD_RETRIES) { + CA_LOG_E("TKqpScanFetcherActor: broken tablet for this request " << state->TabletId + << ", retries limit exceeded (" << state->TotalRetries << "/" << TotalRetries << ")"); + SendGlobalFail(NDqProto::COMPUTE_STATE_FAILURE, YdbStatusToDqStatus(status), issues); + return PassAway(); + } + return StartReadShard(state); } } |