HBASE-11551 BucketCache.run() doesn't handle exceptions correctly (Ted Yu)

This commit is contained in:
Ted Yu 2014-07-24 00:59:10 +00:00
parent 60f5378895
commit 75c94c6bb5
1 changed files with 13 additions and 9 deletions

View File

@ -688,16 +688,20 @@ public class BucketCache implements BlockCache, HeapSize {
try {
while (cacheEnabled && writerEnabled) {
try {
// Blocks
entries.add(inputQueue.take());
inputQueue.drainTo(entries);
synchronized (cacheWaitSignals[threadNO]) {
cacheWaitSignals[threadNO].notifyAll();
try {
// Blocks
entries.add(inputQueue.take());
inputQueue.drainTo(entries);
synchronized (cacheWaitSignals[threadNO]) {
cacheWaitSignals[threadNO].notifyAll();
}
} catch (InterruptedException ie) {
if (!cacheEnabled) break;
}
} catch (InterruptedException ie) {
if (!cacheEnabled) break;
doDrain(entries);
} catch (Exception ioe) {
LOG.error("WriterThread encountered error", ioe);
}
doDrain(entries);
}
} catch (Throwable t) {
LOG.warn("Failed doing drain", t);