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 e9aac92a880..bb09186e29b 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 @@ -1098,6 +1098,9 @@ public class FSHLog implements WAL { @Override public void shutdown() throws IOException { if (shutdown.compareAndSet(false, true)) { + // Close FSHlog instance before shutting down disruptor. This will make sure we will not + // add more entries to ring buffer (via append) while we disruptor#shutdown is in progress. + this.closed = true; try { // Prevent all further flushing and rolling. closeBarrier.stopAndDrainOps(); @@ -1129,7 +1132,7 @@ public class FSHLog implements WAL { i.logCloseRequested(); } } - this.closed = true; + if (LOG.isDebugEnabled()) { LOG.debug("Closing WAL writer in " + FSUtils.getPath(fullPathLogDir)); }