You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by en...@apache.org on 2016/08/04 00:13:08 UTC

[2/3] hbase git commit: HBASE-16271 Fix logging and re-run the test in IntegrationTestBulkLoad

HBASE-16271 Fix logging and re-run the test in IntegrationTestBulkLoad


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/dbd10eee
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/dbd10eee
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/dbd10eee

Branch: refs/heads/branch-1
Commit: dbd10eee3e07ca4b7df3d732ea104f961cddea68
Parents: 12549de
Author: Enis Soztutar <en...@apache.org>
Authored: Wed Aug 3 17:02:35 2016 -0700
Committer: Enis Soztutar <en...@apache.org>
Committed: Wed Aug 3 17:02:41 2016 -0700

----------------------------------------------------------------------
 .../mapreduce/IntegrationTestBulkLoad.java      | 32 +++++++++++++++-----
 1 file changed, 24 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/dbd10eee/hbase-it/src/test/java/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.java
----------------------------------------------------------------------
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.java
index b6a6bfe..904b2c8 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.java
@@ -72,6 +72,7 @@ import org.apache.hadoop.mapreduce.RecordReader;
 import org.apache.hadoop.mapreduce.Reducer;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
+import org.apache.hadoop.util.StringUtils;
 import org.apache.hadoop.util.ToolRunner;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -205,7 +206,7 @@ public class IntegrationTestBulkLoad extends IntegrationTestBase {
     HTableDescriptor desc = admin.getTableDescriptor(t);
     desc.addCoprocessor(SlowMeCoproScanOperations.class.getName());
     HBaseTestingUtility.modifyTableSync(admin, desc);
-    //sleep for sometime. Hope is that the regions are closed/opened before 
+    //sleep for sometime. Hope is that the regions are closed/opened before
     //the sleep returns. TODO: do this better
     Thread.sleep(30000);
   }
@@ -214,7 +215,7 @@ public class IntegrationTestBulkLoad extends IntegrationTestBase {
   public void testBulkLoad() throws Exception {
     runLoad();
     installSlowingCoproc();
-    runCheck();
+    runCheckWithRetry();
   }
 
   public void runLoad() throws Exception {
@@ -290,7 +291,7 @@ public class IntegrationTestBulkLoad extends IntegrationTestBase {
         Admin admin = conn.getAdmin();
         Table table = conn.getTable(getTablename());
         RegionLocator regionLocator = conn.getRegionLocator(getTablename())) {
-      
+
       // Configure the partitioner and other things needed for HFileOutputFormat.
       HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);
 
@@ -659,16 +660,31 @@ public class IntegrationTestBulkLoad extends IntegrationTestBase {
     }
 
     private static void logError(String msg, Context context) throws IOException {
-      HBaseTestingUtility util = new HBaseTestingUtility(context.getConfiguration());
       TableName table = getTableName(context.getConfiguration());
 
       LOG.error("Failure in chain verification: " + msg);
-      LOG.error("cluster status:\n" + util.getHBaseClusterInterface().getClusterStatus());
-      LOG.error("table regions:\n"
-          + Joiner.on("\n").join(util.getHBaseAdmin().getTableRegions(table)));
+      try (Connection connection = ConnectionFactory.createConnection(context.getConfiguration());
+          Admin admin = connection.getAdmin()) {
+        LOG.error("cluster status:\n" + admin.getClusterStatus());
+        LOG.error("table regions:\n"
+            + Joiner.on("\n").join(admin.getTableRegions(table)));
+      }
     }
   }
 
+  private void runCheckWithRetry() throws IOException, ClassNotFoundException, InterruptedException {
+    try {
+      runCheck();
+    } catch (Throwable t) {
+      LOG.warn("Received " + StringUtils.stringifyException(t));
+      LOG.warn("Running the check MR Job again to see whether an ephemeral problem or not");
+      runCheck();
+      throw t; // we should still fail the test even if second retry succeeds
+    }
+    // everything green
+  }
+
+
   /**
    * After adding data to the table start a mr job to
    * @throws IOException
@@ -762,7 +778,7 @@ public class IntegrationTestBulkLoad extends IntegrationTestBase {
       runLoad();
     } else if (check) {
       installSlowingCoproc();
-      runCheck();
+      runCheckWithRetry();
     } else {
       testBulkLoad();
     }