[
https://issues.apache.org/jira/browse/PHOENIX-7895?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrew Kyle Purtell updated PHOENIX-7895:
-----------------------------------------
Description:
In {{BaseResultIterators.getIterators}} we should always check {{retryCount}}
before calling {{recreateIterators}}, so we avoid potential infinite recursion
between {{getIterators}} and {{recreateIterators}}. Something like:
{noformat}
if (retryCount <= 0) {
throw e2;
}
concatIterators = recreateIterators(services, isLocalIndex, allIterators,
iterators,
isReverse, maxQueryEndTime, previousScan, clearedCache, concatIterators,
scanPairItr, scanPair, retryCount - 1);
{noformat}
The existing {{retryCount}} check when handling
{{HashJoinCacheNotFoundException}} specifically becomes redundant and can be
removed.
There is another recursive retry path for {{ColumnFamilyNotFoundException}}
during the local index build that re-enters {{recreateIterators}} without
decrementing retry count. Bound this path also.
was:
In {{BaseResultIterators.getIterators}} we should always check {{retryCount}}
before calling {{recreateIterators}}, so we avoid potential infinite recursion
between {{getIterators}} and {{recreateIterators}}. Something like:
{noformat}
if (retryCount <= 0) {
throw e2;
}
concatIterators = recreateIterators(services, isLocalIndex, allIterators,
iterators,
isReverse, maxQueryEndTime, previousScan, clearedCache, concatIterators,
scanPairItr, scanPair, retryCount - 1);
{noformat}
The existing {{retryCount}} check when handling
{{HashJoinCacheNotFoundException}} specifically becomes redundant and can be
removed.
> Always bound stale region retries in BaseResultIterators
> --------------------------------------------------------
>
> Key: PHOENIX-7895
> URL: https://issues.apache.org/jira/browse/PHOENIX-7895
> Project: Phoenix
> Issue Type: Sub-task
> Affects Versions: 5.4.0, 5.3.1
> Reporter: Andrew Kyle Purtell
> Assignee: Andrew Kyle Purtell
> Priority: Major
>
> In {{BaseResultIterators.getIterators}} we should always check {{retryCount}}
> before calling {{recreateIterators}}, so we avoid potential infinite
> recursion between {{getIterators}} and {{recreateIterators}}. Something like:
> {noformat}
> if (retryCount <= 0) {
> throw e2;
> }
> concatIterators = recreateIterators(services, isLocalIndex, allIterators,
> iterators,
> isReverse, maxQueryEndTime, previousScan, clearedCache, concatIterators,
> scanPairItr, scanPair, retryCount - 1);
> {noformat}
> The existing {{retryCount}} check when handling
> {{HashJoinCacheNotFoundException}} specifically becomes redundant and can be
> removed.
> There is another recursive retry path for {{ColumnFamilyNotFoundException}}
> during the local index build that re-enters {{recreateIterators}} without
> decrementing retry count. Bound this path also.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)