From b3e1dc8f9934691d4afed6b15cbdc1ce0172f1a6 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 399f13d..96afbb4 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 @@ -1272,6 +1272,9 @@ public class HRegion implements HeapSize { // , Writable{ if (!abort && log != null && getRegionServerServices() != null) { writeRegionCloseMarker(log); } + if (log != null) { + log.close(); + } this.closed.set(true); if (memstoreSize.get() != 0) LOG.error("Memstore size is " + memstoreSize.get()); 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 f2b12b2..7333840 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 @@ -47,6 +47,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; @@ -1043,6 +1044,7 @@ class FSHLog implements HLog, Syncable { @Override public void close() throws IOException { if (this.closed) return; + LOG.debug("closing " + this); try { // Prevent all further flushing and rolling. closeBarrier.stopAndDrainOps(); @@ -1993,6 +1995,13 @@ class FSHLog implements HLog, Syncable { // Noop } + @Override + public String toString() { + return Objects.toStringHelper(this) + .add("fullPathLogDir", fullPathLogDir) + .toString(); + } + private static IOException ensureIOException(final Throwable t) { return (t instanceof IOException)? (IOException)t: new IOException(t); } 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 7502d8c..e285218 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 @@ -123,6 +123,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