Index: hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.java =================================================================== diff --git a/hbase/hbase-0.98-etao/branches/hbase-0.98.2-etao/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.java b/hbase/hbase-0.98-etao/branches/hbase-0.98.2-etao/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.java --- a/hbase/hbase-0.98-etao/branches/hbase-0.98.2-etao/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.java (revision 134350) +++ b/hbase/hbase-0.98-etao/branches/hbase-0.98.2-etao/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StripeMultiFileWriter.java (working copy) @@ -383,6 +383,17 @@ sanityCheckRight( right, lastKv.getRowArray(), lastKv.getRowOffset(), lastKv.getRowLength()); } + + // When expired stripes were going to be merged into one, and if no writer was created during + // the compaction, we need to create an empty file to preserve metadata. + if (existingWriters.isEmpty() && 1 == targetCount) { + if (LOG.isDebugEnabled()) { + LOG.debug("Merge expired stripes into one, create an empty file to preserve metadata."); + } + boundaries.add(left); + existingWriters.add(writerFactory.createWriter()); + } + this.boundaries.add(right); } }