Enis Soztutar created HBASE-6608:
------------------------------------

             Summary: HBASE-6160 fix does not work 
                 Key: HBASE-6608
                 URL: https://issues.apache.org/jira/browse/HBASE-6608
             Project: HBase
          Issue Type: Bug
          Components: client, regionserver
    Affects Versions: 0.92.2, 0.96.0, 0.94.2
            Reporter: Enis Soztutar
            Assignee: Enis Soztutar


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