Index: src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java (revision 1335650) +++ src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLogSplitter.java (working copy) @@ -453,6 +453,8 @@ e = RemoteExceptionHandler.checkIOException(e); throw e; } finally { + boolean writersClosed = false; + try { int n = 0; for (Map.Entry logWritersEntry : logWriters.entrySet()) { Object o = logWritersEntry.getValue(); @@ -492,12 +494,29 @@ LOG.debug("Rename " + wap.p + " to " + dst); } } + writersClosed = true; String msg = "Processed " + editsCount + " edits across " + n + " regions" + " threw away edits for " + (logWriters.size() - n) + " regions" + "; log file=" + logPath + " is corrupted = " + isCorrupted + " progress failed = " + progress_failed; LOG.info(msg); status.markComplete(msg); + } finally { + if (!writersClosed) { + for (Map.Entry logWritersEntry : logWriters.entrySet()) { + Object o = logWritersEntry.getValue(); + if (o != BAD_WRITER) { + WriterAndPath wap = (WriterAndPath) o; + try { + wap.w.close(); + } catch (IOException e) { + LOG.debug("Exception while closing the writer :", e); + } + } + } + } + in.close(); + } } return !progress_failed; }