[
https://issues.apache.org/jira/browse/PHOENIX-7003?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17768148#comment-17768148
]
ASF GitHub Bot commented on PHOENIX-7003:
-----------------------------------------
gjacoby126 commented on code in PR #1686:
URL: https://github.com/apache/phoenix/pull/1686#discussion_r1334765885
##########
phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionQueryServicesImplTest.java:
##########
@@ -194,7 +194,28 @@ public void testGetNextRegionStartKey() {
GlobalClientMetrics.GLOBAL_HBASE_COUNTER_METADATA_INCONSISTENCY.getMetric().reset();
when(mockHRegionInfo.getStartKey()).thenReturn(notCorruptedStartKey);
when(mockHRegionInfo.getEndKey()).thenReturn(notCorruptedNewKey);
- testGetNextRegionStartKey(mockCqsi, mockRegionLocation,
notCorruptedEndKey, false);
+ testGetNextRegionStartKey(mockCqsi, mockRegionLocation,
notCorruptedEndKey, true);
Review Comment:
Why is isCorrupted true here if both start and endkey are not corrupt and
the current endkey is greater than the previous end key?
> Harden hbase region inconsistencies check in CQSI#getAllTableRegions method
> ---------------------------------------------------------------------------
>
> Key: PHOENIX-7003
> URL: https://issues.apache.org/jira/browse/PHOENIX-7003
> Project: Phoenix
> Issue Type: Bug
> Components: core
> Reporter: Rushabh Shah
> Assignee: Divneet Kaur
> Priority: Major
>
> Encountered an issue in production cluster where the region inconsistency
> check didn't catch region hole and full region overlaps and the range scan
> query returned incorrect results (result were out of range). We were running
> hbck repair operation _exactly_ at the same time the query was running.
> This is the check
> [here|https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java#L707-L720]
> but this will check whether current regions end key is greater than previous
> region's end key.
> {code}
> if (Bytes.compareTo(regionLocation.getRegionInfo().getEndKey(),
> currentKey) <= 0
> && !Bytes.equals(currentKey, HConstants.EMPTY_START_ROW)
> && !Bytes.equals(regionLocation.getRegionInfo().getEndKey(),
> HConstants.EMPTY_END_ROW)) {
> GLOBAL_HBASE_COUNTER_METADATA_INCONSISTENCY.increment();
> String regionNameString =
> new
> String(regionLocation.getRegionInfo().getRegionName(),
> StandardCharsets.UTF_8);
> throw new IOException(String.format(
> "HBase region information overlap/inconsistencies on
> region %s", regionNameString));
> }
> {code}
> The above check will NOT check if there are any region holes and full region
> overlaps.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)