[ 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