diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/DefaultCompactor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/DefaultCompactor.java index 5d712c1..ae09fda 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/DefaultCompactor.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/DefaultCompactor.java @@ -98,9 +98,11 @@ public class DefaultCompactor extends Compactor { smallestReadPoint = Math.min(fd.minSeqIdToKeep, smallestReadPoint); cleanSeqId = true; } - + + // When all MVCC readpoints are 0, don't write them. + // See HBASE-8166, HBASE-12600, and HBASE-13389. writer = store.createWriterInTmp(fd.maxKeyCount, this.compactionCompression, true, - true, fd.maxTagsLength > 0); + fd.maxMVCCReadpoint >= 0, fd.maxTagsLength > 0); boolean finished = performCompaction(scanner, writer, smallestReadPoint, cleanSeqId, throughputController); if (!finished) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/StripeCompactor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/StripeCompactor.java index b957e16..fe1a416 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/StripeCompactor.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/StripeCompactor.java @@ -117,12 +117,14 @@ public class StripeCompactor extends Compactor { cleanSeqId = true; } + final boolean needMvcc = fd.maxMVCCReadpoint >= 0; + final Compression.Algorithm compression = store.getFamily().getCompactionCompression(); StripeMultiFileWriter.WriterFactory factory = new StripeMultiFileWriter.WriterFactory() { @Override public Writer createWriter() throws IOException { return store.createWriterInTmp( - fd.maxKeyCount, compression, true, true, fd.maxTagsLength > 0); + fd.maxKeyCount, compression, true, needMvcc, fd.maxTagsLength > 0); } };