From f1e0371a864038233b4ade0dcb7a7cd673185ae7 Mon Sep 17 00:00:00 2001 From: Elliott Clark Date: Thu, 10 Mar 2016 14:48:57 -0800 Subject: [PATCH] HBASE-15441 Fix WAL splitting when region has moved multiple times --- .../org/apache/hadoop/hbase/regionserver/HRegion.java | 1 - .../java/org/apache/hadoop/hbase/wal/WALSplitter.java | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) 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 d20b478..93a1844 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 @@ -6422,7 +6422,6 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi HRegion r = HRegion.newHRegion(tableDir, wal, fs, conf, info, htd, rsServices); r.initializeWarmup(reporter); - r.close(); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java index ad5774f..b91daf0 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitter.java @@ -359,6 +359,10 @@ public class WALSplitter { editsSkipped++; continue; } + if (entry.getEdit().isMetaEdit() && !outputSink.keepRegionEvents()) { + editsSkipped++; + continue; + } entryBuffers.appendEntry(entry); editsCount++; int moreWritersFromLastCheck = this.getNumOpenWriters() - numOpenedFilesLastCheck; @@ -1266,6 +1270,8 @@ public class WALSplitter { public boolean flush() throws IOException { return false; } + + public abstract boolean keepRegionEvents(); } /** @@ -1609,6 +1615,11 @@ public class WALSplitter { } } + @Override + public boolean keepRegionEvents() { + return false; + } + /** * @return a map from encoded region ID to the number of edits written out for that region. */ @@ -2060,6 +2071,11 @@ public class WALSplitter { return false; } + @Override + public boolean keepRegionEvents() { + return true; + } + void addWriterError(Throwable t) { thrown.add(t); } -- 2.7.2