[ 
https://issues.apache.org/jira/browse/HBASE-5986?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13277306#comment-13277306
 ] 

jirapos...@reviews.apache.org commented on HBASE-5986:
------------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/5133/
-----------------------------------------------------------

(Updated 2012-05-17 00:58:21.965488)


Review request for hbase.


Changes
-------

v2: 
 - addressed review comments
 - when timeout and interrupt throws RegionOfflineException. 
 - reuse HTable instances in BMSV. 
 - adds close() to MSV assuming it is indeed not public, evolving but private. 
we should decide the visibility. 


Summary
-------

We found this issue when running large scale ingestion tests for HBASE-5754. 
The problem is that the .META. table updates are not atomic while splitting a 
region. In SplitTransaction, there is a time lap between the marking the parent 
offline, and adding of daughters to the META table. This can result in clients 
using MetaScanner, of HTable.getStartEndKeys (used by the TableInputFormat) 
missing regions which are made just offline, but the daughters are not added 
yet.

This patch is the approach 2 mentioned in the issue comments, mainly during 
META scan, if we detect that the region is split, we block until the 
information for the child regions are available in META and manually feed those 
rows to the MetaScanner. Although approach 3 (using local region transactions) 
seems cleaner, they are not available under branch 0.92, which I think should 
also incorporate this fix. I'll provide ports once we are clear for trunk. 

Also this patch does not fix MetaReader (see 
https://issues.apache.org/jira/browse/HBASE-3475). 


This addresses bug HBASE-5986.
    https://issues.apache.org/jira/browse/HBASE-5986


Diffs (updated)
-----

  src/main/java/org/apache/hadoop/hbase/catalog/MetaEditor.java 8873512 
  src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java 5d4be3f 
  src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java 5cac9af 
  src/main/java/org/apache/hadoop/hbase/client/HTable.java b8290e4 
  src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java f404999 
  src/main/java/org/apache/hadoop/hbase/master/HMaster.java 0ad9b18 
  src/main/java/org/apache/hadoop/hbase/util/HBaseFsck.java 7b4f4a2 
  
src/test/java/org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.java
 a8091e6 

Diff: https://reviews.apache.org/r/5133/diff


Testing
-------

added extensive tests under TestEndToEndSplitTranscation, and ran existing unit 
tests. 


Thanks,

enis


                
> Clients can see holes in the META table when regions are being split
> --------------------------------------------------------------------
>
>                 Key: HBASE-5986
>                 URL: https://issues.apache.org/jira/browse/HBASE-5986
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 0.92.1, 0.96.0, 0.94.1
>            Reporter: Enis Soztutar
>            Assignee: Enis Soztutar
>         Attachments: HBASE-5986-test_v1.patch
>
>
> We found this issue when running large scale ingestion tests for HBASE-5754. 
> The problem is that the .META. table updates are not atomic while splitting a 
> region. In SplitTransaction, there is a time lap between the marking the 
> parent offline, and adding of daughters to the META table. This can result in 
> clients using MetaScanner, of HTable.getStartEndKeys (used by the 
> TableInputFormat) missing regions which are made just offline, but the 
> daughters are not added yet. 
> This is also related to HBASE-4335. 

--
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