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);
}
}