From 98123af8a5131337e338c7fc033af57aa4dada11 Mon Sep 17 00:00:00 2001 From: Geoffrey Jacoby Date: Thu, 8 Apr 2021 17:11:42 -0700 Subject: [PATCH 1/4] HBASE-25751 - Add writable TimeToPurgeDeletes to ScanOptions --- .../regionserver/CustomizedScanInfoBuilder.java | 13 ++++++++++++- .../apache/hadoop/hbase/regionserver/ScanInfo.java | 4 ++-- .../hadoop/hbase/regionserver/ScanOptions.java | 6 ++++++ .../hbase/coprocessor/SimpleRegionObserver.java | 1 + .../coprocessor/TestRegionCoprocessorHost.java | 2 ++ 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CustomizedScanInfoBuilder.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CustomizedScanInfoBuilder.java index ac9980b01a01..3b6104ec06c9 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CustomizedScanInfoBuilder.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CustomizedScanInfoBuilder.java @@ -39,6 +39,8 @@ public class CustomizedScanInfoBuilder implements ScanOptions { private Integer minVersions; + private long timeToPurgeDeletes; + private final Scan scan; public CustomizedScanInfoBuilder(ScanInfo scanInfo) { @@ -76,7 +78,8 @@ public ScanInfo build() { if (maxVersions == null && ttl == null && keepDeletedCells == null) { return scanInfo; } - return scanInfo.customize(getMaxVersions(), getTTL(), getKeepDeletedCells(), getMinVersions()); + return scanInfo.customize(getMaxVersions(), getTTL(), getKeepDeletedCells(), getMinVersions(), + getTimeToPurgeDeletes()); } @Override @@ -105,6 +108,14 @@ public void setMinVersions(int minVersions) { this.minVersions = minVersions; } + @Override public long getTimeToPurgeDeletes() { + return timeToPurgeDeletes; + } + + @Override public void setTimeToPurgeDeletes(long ttl) { + this.timeToPurgeDeletes = ttl; + } + @Override public Scan getScan() { return scan; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanInfo.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanInfo.java index 4e2066601c5a..fefb996df2ab 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanInfo.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanInfo.java @@ -171,11 +171,11 @@ public boolean isNewVersionBehavior() { * Used for CP users for customizing max versions, ttl and keepDeletedCells. */ ScanInfo customize(int maxVersions, long ttl, KeepDeletedCells keepDeletedCells) { - return customize(maxVersions, ttl, keepDeletedCells, minVersions); + return customize(maxVersions, ttl, keepDeletedCells, minVersions, timeToPurgeDeletes); } ScanInfo customize(int maxVersions, long ttl, KeepDeletedCells keepDeletedCells, - int minVersions) { + int minVersions, long timeToPurgeDeletes) { return new ScanInfo(family, minVersions, maxVersions, ttl, keepDeletedCells, timeToPurgeDeletes, comparator, tableMaxRowSize, usePread, cellsPerTimeoutCheck, parallelSeekEnabled, preadMaxBytes, newVersionBehavior); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanOptions.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanOptions.java index e81f3ce4b308..8fdf69c8d330 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanOptions.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanOptions.java @@ -71,6 +71,12 @@ default void readAllVersions() { void setMinVersions(int minVersions); + long getTimeToPurgeDeletes(); + + void setTimeToPurgeDeletes(long ttl); + + + /** * Returns a copy of the Scan object. Modifying it will have no effect. */ diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java index e432acdda1d8..fb1da66e603f 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java @@ -745,6 +745,7 @@ private void setScanOptions(ScanOptions options) { options.setMinVersions(TestRegionCoprocessorHost.MIN_VERSIONS); options.setKeepDeletedCells(KeepDeletedCells.TRUE); options.setTTL(TestRegionCoprocessorHost.TTL); + options.setTimeToPurgeDeletes(TestRegionCoprocessorHost.TIME_TO_PURGE_DELETES); } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.java index b0188d9b7ce5..66077619cf40 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionCoprocessorHost.java @@ -78,6 +78,7 @@ public class TestRegionCoprocessorHost { public static final int MAX_VERSIONS = 3; public static final int MIN_VERSIONS = 2; public static final int TTL = 1000; + public static final int TIME_TO_PURGE_DELETES = 2000; @Before public void setup() throws IOException { @@ -203,6 +204,7 @@ private void verifyScanInfo(ScanInfo newScanInfo) { assertEquals(MAX_VERSIONS, newScanInfo.getMaxVersions()); assertEquals(MIN_VERSIONS, newScanInfo.getMinVersions()); assertEquals(TTL, newScanInfo.getTtl()); + assertEquals(TIME_TO_PURGE_DELETES, newScanInfo.getTimeToPurgeDeletes()); } private ScanInfo getScanInfo() { From 173f7a7c9f18de56a08deefe41bc721b5cae9e7a Mon Sep 17 00:00:00 2001 From: Geoffrey Jacoby Date: Thu, 8 Apr 2021 17:18:17 -0700 Subject: [PATCH 2/4] HBASE-25751 - Add writable TimeToPurgeDeletes to ScanOptions --- .../hbase/regionserver/CustomizedScanInfoBuilder.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CustomizedScanInfoBuilder.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CustomizedScanInfoBuilder.java index 3b6104ec06c9..7dae7ac3d07d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CustomizedScanInfoBuilder.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CustomizedScanInfoBuilder.java @@ -17,7 +17,6 @@ */ package org.apache.hadoop.hbase.regionserver; -import java.io.IOException; import org.apache.hadoop.hbase.KeepDeletedCells; import org.apache.hadoop.hbase.client.ImmutableScan; import org.apache.hadoop.hbase.client.Scan; @@ -108,11 +107,13 @@ public void setMinVersions(int minVersions) { this.minVersions = minVersions; } - @Override public long getTimeToPurgeDeletes() { + @Override + public long getTimeToPurgeDeletes() { return timeToPurgeDeletes; } - @Override public void setTimeToPurgeDeletes(long ttl) { + @Override + public void setTimeToPurgeDeletes(long ttl) { this.timeToPurgeDeletes = ttl; } From 6f862f46e6585c06ee617d2477e733070cc98860 Mon Sep 17 00:00:00 2001 From: Geoffrey Jacoby Date: Thu, 8 Apr 2021 17:19:12 -0700 Subject: [PATCH 3/4] HBASE-25751 - Add writable TimeToPurgeDeletes to ScanOptions --- .../java/org/apache/hadoop/hbase/regionserver/ScanOptions.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanOptions.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanOptions.java index 8fdf69c8d330..a51cfb867d04 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanOptions.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanOptions.java @@ -75,8 +75,6 @@ default void readAllVersions() { void setTimeToPurgeDeletes(long ttl); - - /** * Returns a copy of the Scan object. Modifying it will have no effect. */ From a852f535718374775f9b63ed19ca99a1765046cb Mon Sep 17 00:00:00 2001 From: Geoffrey Jacoby Date: Thu, 8 Apr 2021 19:21:30 -0700 Subject: [PATCH 4/4] HBASE-25751 - Add writable TimeToPurgeDeletes to ScanOptions --- .../java/org/apache/hadoop/hbase/regionserver/ScanInfo.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanInfo.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanInfo.java index fefb996df2ab..831ce01f8714 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanInfo.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanInfo.java @@ -168,12 +168,16 @@ public boolean isNewVersionBehavior() { } /** - * Used for CP users for customizing max versions, ttl and keepDeletedCells. + * Used by CP users for customizing max versions, ttl and keepDeletedCells. */ ScanInfo customize(int maxVersions, long ttl, KeepDeletedCells keepDeletedCells) { return customize(maxVersions, ttl, keepDeletedCells, minVersions, timeToPurgeDeletes); } + /** + * Used by CP users for customizing max versions, ttl, keepDeletedCells, min versions, + * and time to purge deletes. + */ ScanInfo customize(int maxVersions, long ttl, KeepDeletedCells keepDeletedCells, int minVersions, long timeToPurgeDeletes) { return new ScanInfo(family, minVersions, maxVersions, ttl, keepDeletedCells, timeToPurgeDeletes,