Index: src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java (revision 1234274) +++ src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java (working copy) @@ -860,6 +860,7 @@ public void close() throws IOException { try { logSyncerThread.interrupt(); + logSyncerThread.close(); // Make sure we synced everything logSyncerThread.join(this.optionalFlushInterval*2); } catch (InterruptedException e) { @@ -1017,6 +1018,7 @@ private final long optionalFlushInterval; + private boolean closeLogSyncer = false; LogSyncer(long optionalFlushInterval) { this.optionalFlushInterval = optionalFlushInterval; } @@ -1026,7 +1028,7 @@ try { // awaiting with a timeout doesn't always // throw exceptions on interrupt - while(!this.isInterrupted()) { + while(!this.isInterrupted() && !closeLogSyncer) { try { Thread.sleep(this.optionalFlushInterval); @@ -1042,6 +1044,10 @@ LOG.info(getName() + " exiting"); } } + + void close() { + closeLogSyncer = true; + } } @Override