[ 
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

        

Reply via email to