index 517a0cd..446bdd4 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 @@ -347,15 }347,24 @@ public class WALSplitter { lastFlushedSequenceIds.put(encodedRegionNameAsStr, lastFlushedSequenceId); } - if (lastFlushedSequenceId >= entry.getKey().getSequenceId()) { - editsSkipped++; - continue; + + long seqId = entry.getKey().getSequenceId(); + // Don't send Close/Open region events to recovered edit type sinks. For compaction marker, + // we set its seqId to Long.MAX_VALUE so that it won't be skipped because of smaller sequenceId. + if (entry.getEdit().isMetaEdit()) { + if(!outputSink.keepRegionEvent(entry)) { + editsSkipped++; + continue; + }else{ + seqId = Long.MAX_VALUE; + } } - // Don't send Compaction/Close/Open region events to recovered edit type sinks. - if (entry.getEdit().isMetaEdit() && !outputSink.keepRegionEvent(entry)) { + + if (lastFlushedSequenceId >= seqId) { editsSkipped++; continue; } + entryBuffers.appendEntry(entry); editsCount++; int moreWritersFromLastCheck = this.getNumOpenWriters() - numOpenedFilesLastCheck;