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

Jonathan Hsieh commented on HBASE-5351:
---------------------------------------

I buy that the patch should fix the problem, and don't think we need to have a 
test here.  However, to prevent this problem in the future, can you update the 
javadoc comments in HBaseAdmin.createTableAsync to warn about this condition 
alerting devs that use this method to make sure the table is available before 
instantiating the HTable?



                
> hbase completebulkload to a new table fails in a race
> -----------------------------------------------------
>
>                 Key: HBASE-5351
>                 URL: https://issues.apache.org/jira/browse/HBASE-5351
>             Project: HBase
>          Issue Type: Bug
>          Components: mapreduce
>    Affects Versions: 0.94.0, 0.92.0
>            Reporter: Gregory Chanan
>            Assignee: Gregory Chanan
>
> I have a test that tests vanilla use of importtsv with importtsv.bulk.output 
> option followed by completebulkload to a new table.
> This sometimes fails as follows:
> 11/12/19 15:02:39 WARN client.HConnectionManager$HConnectionImplementation: 
> Encountered problems when prefetch META table:
> org.apache.hadoop.hbase.TableNotFoundException: Cannot find row in .META. for 
> table: ml_items_copy, row=ml_items_copy,,99999999999999
> at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:157)
> at org.apache.hadoop.hbase.client.MetaScanner.access$000(MetaScanner.java:52)
> at org.apache.hadoop.hbase.client.MetaScanner$1.connect(MetaScanner.java:130)
> at org.apache.hadoop.hbase.client.MetaScanner$1.connect(MetaScanner.java:127)
> at 
> org.apache.hadoop.hbase.client.HConnectionManager.execute(HConnectionManager.java:359)
> at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:127)
> at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:103)
> at 
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.prefetchRegionCache(HConnectionManager.java:875)
> at 
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:929)
> at 
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:817)
> at 
> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:781)
> at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:247)
> at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:211)
> at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:171)
> at 
> org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.createTable(LoadIncrementalHFiles.java:673)
> at 
> org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.run(LoadIncrementalHFiles.java:697)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:83)
> at 
> org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.main(LoadIncrementalHFiles.java:707)
> The race appears to be calling HbAdmin.createTableAsync(htd, keys) and then 
> creating an HTable object before that call has actually completed.
> The following change to 
> /src/main/java/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.java 
> appears to fix the problem, but I have not been able to reproduce the race 
> reliably, in order to write a test.
> {code}
> -    HTable table = new HTable(this.cfg, tableName);
> -
> -    HConnection conn = table.getConnection();
>      int ctr = 0;
> -    while (!conn.isTableAvailable(table.getTableName()) && 
> (ctr<TABLE_CREATE_MA
> +    while (!this.hbAdmin.isTableAvailable(tableName) && 
> (ctr<TABLE_CREATE_MAX_R
> {code}

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