[
https://issues.apache.org/jira/browse/HBASE-20182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16429495#comment-16429495
]
stack commented on HBASE-20182:
-------------------------------
Sorry for late review.
How comes we drop these checks?
{code}
}
if (!info.getTable().equals(tableName)) {
complete(tableName, req, null, new TableNotFoundException(
"Table '" + tableName + "' was not found, got: '" + info.getTable() +
"'"));
return;
}
if (info.isSplit()) {
complete(tableName, req, null,
new RegionOfflineException(
"the only available region for the required row is a split parent,"
+
" the daughters should be online soon: '" +
info.getRegionNameAsString() + "'"));
return;
}
{code}
... and isOffline
The scan now has stop row. Does that explain why we no longer need the
tablename check?
I like the refactor testing per next.
What is thinking on below....
setCaching(5)
We might end up scanning more than 5 rows... that'd be ok?
Looks like it was a tough one to debug.
Nice test.
> Can not locate region after split and merge
> -------------------------------------------
>
> Key: HBASE-20182
> URL: https://issues.apache.org/jira/browse/HBASE-20182
> Project: HBase
> Issue Type: Bug
> Components: Region Assignment
> Reporter: Duo Zhang
> Assignee: Duo Zhang
> Priority: Blocker
> Fix For: 2.0.0
>
> Attachments: HBASE-20182-UT.patch, HBASE-20182-v1.patch,
> HBASE-20182-v2.patch, HBASE-20182-v3.patch, HBASE-20182-v3.patch,
> HBASE-20182-v3.patch, HBASE-20182.patch
>
>
> When implementing serial replication feature in HBASE-20046, I found that
> when splitting a region, we will not remove the parent region, instead we
> will mark it offline.
> And when locating a region, we will only scan one row so if we locate to the
> offlined region then we are dead.
> This will not happen for splitting, since one of the new daughter regions
> have the same start row with the parent region, and the timestamp is greater
> so when doing reverse scan we will always hit the daughter first.
> But if we also consider merge then bad things happen. Consider we have two
> regions A and B, we split B to C and D, and then merge A and C to E, then
> ideally the regions should be E and D, but actually the regions in meta will
> be E, B and D, and they all have different start rows. If you use a row
> within the range of old region C, then we will always locate to B and throw
> exception.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)