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


Reply via email to