Author: stack
Date: Fri Feb 24 23:40:27 2012
New Revision: 1293479
URL: http://svn.apache.org/viewvc?rev=1293479&view=rev
Log:
HBASE-5351 hbase completebulkload to a new table fails in a race
Modified:
hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
hbase/trunk/src/main/java/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.java
Modified:
hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
URL:
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java?rev=1293479&r1=1293478&r2=1293479&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
(original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java
Fri Feb 24 23:40:27 2012
@@ -447,7 +447,9 @@ public class HBaseAdmin implements Abort
/**
* Creates a new table but does not block and wait for it to come online.
- * Asynchronous operation.
+ * Asynchronous operation. To check if the table exists, use
+ * {@link: #isTableAvailable} -- it is not safe to create an HTable
+ * instance to this table before it is available.
*
* @param desc table descriptor for table
*
Modified:
hbase/trunk/src/main/java/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.java
URL:
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.java?rev=1293479&r1=1293478&r2=1293479&view=diff
==============================================================================
---
hbase/trunk/src/main/java/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.java
(original)
+++
hbase/trunk/src/main/java/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.java
Fri Feb 24 23:40:27 2012
@@ -673,23 +673,9 @@ public class LoadIncrementalHFiles exten
}
keys = LoadIncrementalHFiles.inferBoundaries(map);
- try {
- this.hbAdmin.createTableAsync(htd, keys);
- } catch (java.net.SocketTimeoutException e) {
- System.err.println("Caught Socket timeout.. Mostly caused by a slow
region assignment by master!");
- }
-
- HTable table = new HTable(this.cfg, tableName);
+ this.hbAdmin.createTable(htd,keys);
- HConnection conn = table.getConnection();
- int ctr = 0;
- while (!conn.isTableAvailable(table.getTableName()) &&
(ctr<TABLE_CREATE_MAX_RETRIES)) {
- LOG.info("Table " + tableName + "not yet available... Sleeping for 60
more seconds...");
- /* Every TABLE_CREATE_SLEEP milliseconds, wakes up and checks if the
table is available*/
- Thread.sleep(TABLE_CREATE_SLEEP);
- ctr++;
- }
- LOG.info("Table "+ tableName +" is finally available!!");
+ LOG.info("Table "+ tableName +" is available!!");
}
@Override