HBASE-9022 TestHLogSplit.testIOEOnOutputThread fails; DEBUGGING PART2

git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1506819 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael Stack 2013-07-25 04:58:07 +00:00
parent de13130472
commit 387e323de4
1 changed files with 27 additions and 3 deletions

View File

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