[
https://issues.apache.org/jira/browse/PHOENIX-1146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14087807#comment-14087807
]
Hudson commented on PHOENIX-1146:
---------------------------------
SUCCESS: Integrated in Phoenix | 3.0 | Hadoop1 #176 (See
[https://builds.apache.org/job/Phoenix-3.0-hadoop1/176/])
PHOENIX-1146 Detect stale client region cache on server and retry scans in
split regions (jtaylor: rev 997919401e92a749029776a3677f5ef3b74bbb7e)
*
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/BaseScannerRegionObserver.java
*
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/ScanRegionObserver.java
*
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/GroupedAggregateRegionObserver.java
*
phoenix-core/src/main/java/org/apache/phoenix/schema/StaleRegionBoundaryCacheException.java
* phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java
*
phoenix-core/src/it/java/org/apache/phoenix/end2end/SkipScanAfterManualSplitIT.java
* phoenix-core/src/main/java/org/apache/phoenix/util/ServerUtil.java
* phoenix-core/src/main/java/org/apache/phoenix/util/SchemaUtil.java
* phoenix-core/src/main/java/org/apache/phoenix/iterate/ParallelIterators.java
*
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
> Detect stale client region cache on server and retry scans in split regions
> ---------------------------------------------------------------------------
>
> Key: PHOENIX-1146
> URL: https://issues.apache.org/jira/browse/PHOENIX-1146
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 5.0.0, 3.1, 4.1
> Reporter: James Taylor
> Assignee: James Taylor
> Attachments: PHOENIX-1146.patch
>
>
> HBase cannot recover correctly from an aggregate scan run on the coprocessor
> side (see HBASE-116670). This can lead to incorrect query results the first
> time a query is run after a split occurs (due to the region boundary cache
> being stale). Phoenix can work around this by:
> - detecting on server before the scan starts that the region cache used by
> the client is out-of-date. This can be done up-front because the start/stop
> row of the scan should never span across a region boundary. In this case, a
> DoNotRetryIOException is thrown with some embedded information to cause a
> StaleRegionBoundaryCacheException to be thrown on the client.
> - catching this exception on the client (in ParallelIterators), refreshing
> the region boundary cache, and re-running the necessary scans based on the
> new region boundaries.
> - detecting if this happens more than N times to prevent any kind of
> excessive looping due to splits occurring over and over again.
> Phoenix has additional requirements above and beyond standard HBase clients,
> so even if HBase could recover from this situation, Phoenix would likely need
> this workaround to ensure that a scan does not span across region boundaries.
> This is required when the client is doing a merge sort on the results of the
> parallel scans, mainly in ORDER BY (including topN) and local indexing, and
> potentially GROUP BY if we move toward sorting the distinct groups on the
> server side.
--
This message was sent by Atlassian JIRA
(v6.2#6252)