You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2013/07/25 06:58:07 UTC

svn commit: r1506819 - /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLogSplit.java

Author: stack
Date: Thu Jul 25 04:58:07 2013
New Revision: 1506819

URL: http://svn.apache.org/r1506819
Log:
HBASE-9022 TestHLogSplit.testIOEOnOutputThread fails; DEBUGGING PART2

Modified:
    hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLogSplit.java

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLogSplit.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLogSplit.java?rev=1506819&r1=1506818&r2=1506819&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLogSplit.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestHLogSplit.java Thu Jul 25 04:58:07 2013
@@ -742,7 +742,8 @@ public class TestHLogSplit {
       InstrumentedSequenceFileLogWriter.activateFailure = true;
       HLogSplitter.split(HBASEDIR, HLOGDIR, OLDLOGDIR, fs, conf);
     } catch (IOException e) {
-      assertEquals("This exception is instrumented and should only be thrown for testing", e.getMessage());
+      assertTrue(e.getMessage().
+        contains("This exception is instrumented and should only be thrown for testing"));
       throw e;
     } finally {
       InstrumentedSequenceFileLogWriter.activateFailure = false;
@@ -810,13 +811,36 @@ public class TestHLogSplit {
         return mockWriter;
       }
     };
-    // Start up background thread that will thread dump if we are stuck here.
-    Threads.threadDumpingIsAlive(Thread.currentThread());
+    // Set up a background thread dumper.  Needs a thread to depend on and then we need to run
+    // the thread dumping in a background thread so it does not hold up the test.
+    final AtomicBoolean stop = new AtomicBoolean(false);
+    final Thread someOldThread = new Thread("Some-old-thread") {
+      @Override
+      public void run() {
+        while(!stop.get()) Threads.sleep(10);
+      }
+    };
+    someOldThread.setDaemon(true);
+    someOldThread.start();
+    final Thread t = new Thread("Background-thread-dumper") {
+      public void run() {
+        try {
+          Threads.threadDumpingIsAlive(someOldThread);
+        } catch (InterruptedException e) {
+          e.printStackTrace();
+        }
+      }
+    };
+    t.setDaemon(true);
+    t.start();
     try {
       logSplitter.splitLogFile(logfiles[0], null);
       fail("Didn't throw!");
     } catch (IOException ioe) {
       assertTrue(ioe.toString().contains("Injected"));
+    } finally {
+      // Setting this to true will turn off the background thread dumper.
+      stop.set(true);
     }
   }