From c345ec6e652a158fc4a46440eb73628821c3e586 Mon Sep 17 00:00:00 2001 From: Nick Dimiduk Date: Thu, 18 Sep 2014 12:21:33 -0400 Subject: [PATCH] HBASE-12018 HRegion.close neglects to close its HLog --- .../main/java/org/apache/hadoop/hbase/regionserver/HRegion.java | 3 +++ .../java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java | 9 +++++++++ .../apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.java | 1 + 3 files changed, 13 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index e94c031..8488297 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -1340,6 +1340,9 @@ public class HRegion implements HeapSize { // , Writable{ if (!abort && log != null && getRegionServerServices() != null && !writestate.readOnly) { writeRegionCloseMarker(log); } + if (log != null) { + log.close(); + } this.closed.set(true); if (writestate.readOnly) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java index 4c9715d..447d727 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/FSHLog.java @@ -40,6 +40,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.ReentrantLock; +import com.google.common.base.Objects; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.classification.InterfaceAudience; @@ -890,6 +891,7 @@ class FSHLog implements HLog, Syncable { if (this.closed) { return; } + LOG.debug("closing " + this); try { asyncNotifier.interrupt(); @@ -1662,6 +1664,13 @@ class FSHLog implements HLog, Syncable { return result == null ? HConstants.NO_SEQNUM : result.longValue(); } + @Override + public String toString() { + return Objects.toStringHelper(this) + .add("root", rootDir) + .toString(); + } + /** * Pass one or more log file names and it will either dump out a text version * on stdout or split the specified log files. diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.java index a4c1ade..80d43a2 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.java @@ -121,6 +121,7 @@ public class ProtobufLogWriter extends WriterBase { @Override public void close() throws IOException { if (this.output != null) { + LOG.debug("closing " + this); try { if (!trailerWritten) writeWALTrailer(); this.output.close(); -- 1.9.0