[
https://issues.apache.org/jira/browse/HBASE-6608?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13440156#comment-13440156
]
Hudson commented on HBASE-6608:
-------------------------------
Integrated in HBase-0.92-security #116 (See
[https://builds.apache.org/job/HBase-0.92-security/116/])
HBASE-6608 Fix for HBASE-6160, META entries from daughters can be deleted
before parent entries, shouldn't compare HRegionInfo's (Enis) (Revision 1375159)
Result = FAILURE
tedyu :
Files :
*
/hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
*
/hbase/branches/0.92/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
> Fix for HBASE-6160, META entries from daughters can be deleted before parent
> entries, shouldn't compare HRegionInfo's
> ---------------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-6608
> URL: https://issues.apache.org/jira/browse/HBASE-6608
> Project: HBase
> Issue Type: Bug
> Components: client, regionserver
> Affects Versions: 0.92.1, 0.96.0, 0.94.2
> Reporter: Enis Soztutar
> Assignee: Enis Soztutar
> Fix For: 0.92.2, 0.96.0, 0.94.2
>
> Attachments: 6608-v2.patch, hbase-6608_v1-0.92+0.94.patch,
> hbase-6608_v1.patch
>
>
> Our nightlies discovered that the patch for HBASE-6160 did not actually fix
> the issue of "META entries from daughters can be deleted before parent
> entries". Instead of reopening the HBASE-6160, it is cleaner to track it
> here.
> The original issue is:
> {quote}
> HBASE-5986 fixed and issue, where the client sees the META entry for the
> parent, but not the children. However, after the fix, we have seen the
> following issue in tests:
> Region A is split to -> B, C
> Region B is split to -> D, E
> After some time, META entry for B is deleted since it is not needed anymore,
> but META entry for Region A stays in META (C still refers it). In this case,
> the client throws RegionOfflineException for B.
> {quote}
> The problem with the fix seems to be that we keep and compare HRegionInfo's
> in the HashSet at CatalogJanitor.java#scan(), but HRI that are compared are
> not equal.
> {code}
> HashSet<HRegionInfo> parentNotCleaned = new HashSet<HRegionInfo>(); //regions
> whose parents are still around
> for (Map.Entry<HRegionInfo, Result> e : splitParents.entrySet()) {
> if (!parentNotCleaned.contains(e.getKey()) && cleanParent(e.getKey(),
> e.getValue())) {
> cleaned++;
> } else {
> ...
> {code}
> In the above case, Meta row for region A will contain a serialized version of
> B that is not offline. However Meta row for region B will contain a
> serialized version of B that is offline (MetaEditor.offlineParentInMeta()
> does that). So the deserialized version we put to HashSet and the
> deserialized version we query contains() from HashSet are different in the
> offline field, thus HRI.equals() fail.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira