HBASE-25751 - Add writable TimeToPurgeDeletes to ScanOptions (#3137)
Signed-off-by: Andrew Purtell <apurtell@apache.org> Signed-off-by: Duo Zhang <zhangduo@apache.org> Signed-off-by: Viraj Jasani <vjasani@apache.org>
This commit is contained in:
parent
6aab1341a1
commit
74e533d5ab
|
@ -17,7 +17,6 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.hadoop.hbase.regionserver;
|
package org.apache.hadoop.hbase.regionserver;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import org.apache.hadoop.hbase.KeepDeletedCells;
|
import org.apache.hadoop.hbase.KeepDeletedCells;
|
||||||
import org.apache.hadoop.hbase.client.ImmutableScan;
|
import org.apache.hadoop.hbase.client.ImmutableScan;
|
||||||
import org.apache.hadoop.hbase.client.Scan;
|
import org.apache.hadoop.hbase.client.Scan;
|
||||||
|
@ -39,6 +38,8 @@ public class CustomizedScanInfoBuilder implements ScanOptions {
|
||||||
|
|
||||||
private Integer minVersions;
|
private Integer minVersions;
|
||||||
|
|
||||||
|
private long timeToPurgeDeletes;
|
||||||
|
|
||||||
private final Scan scan;
|
private final Scan scan;
|
||||||
|
|
||||||
public CustomizedScanInfoBuilder(ScanInfo scanInfo) {
|
public CustomizedScanInfoBuilder(ScanInfo scanInfo) {
|
||||||
|
@ -76,7 +77,8 @@ public class CustomizedScanInfoBuilder implements ScanOptions {
|
||||||
if (maxVersions == null && ttl == null && keepDeletedCells == null) {
|
if (maxVersions == null && ttl == null && keepDeletedCells == null) {
|
||||||
return scanInfo;
|
return scanInfo;
|
||||||
}
|
}
|
||||||
return scanInfo.customize(getMaxVersions(), getTTL(), getKeepDeletedCells(), getMinVersions());
|
return scanInfo.customize(getMaxVersions(), getTTL(), getKeepDeletedCells(), getMinVersions(),
|
||||||
|
getTimeToPurgeDeletes());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -105,6 +107,16 @@ public class CustomizedScanInfoBuilder implements ScanOptions {
|
||||||
this.minVersions = minVersions;
|
this.minVersions = minVersions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getTimeToPurgeDeletes() {
|
||||||
|
return timeToPurgeDeletes;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setTimeToPurgeDeletes(long ttl) {
|
||||||
|
this.timeToPurgeDeletes = ttl;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Scan getScan() {
|
public Scan getScan() {
|
||||||
return scan;
|
return scan;
|
||||||
|
|
|
@ -168,14 +168,18 @@ public class ScanInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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) {
|
ScanInfo customize(int maxVersions, long ttl, KeepDeletedCells keepDeletedCells) {
|
||||||
return customize(maxVersions, ttl, keepDeletedCells, minVersions);
|
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,
|
ScanInfo customize(int maxVersions, long ttl, KeepDeletedCells keepDeletedCells,
|
||||||
int minVersions) {
|
int minVersions, long timeToPurgeDeletes) {
|
||||||
return new ScanInfo(family, minVersions, maxVersions, ttl, keepDeletedCells, timeToPurgeDeletes,
|
return new ScanInfo(family, minVersions, maxVersions, ttl, keepDeletedCells, timeToPurgeDeletes,
|
||||||
comparator, tableMaxRowSize, usePread, cellsPerTimeoutCheck, parallelSeekEnabled,
|
comparator, tableMaxRowSize, usePread, cellsPerTimeoutCheck, parallelSeekEnabled,
|
||||||
preadMaxBytes, newVersionBehavior);
|
preadMaxBytes, newVersionBehavior);
|
||||||
|
|
|
@ -71,6 +71,10 @@ public interface ScanOptions {
|
||||||
|
|
||||||
void setMinVersions(int minVersions);
|
void setMinVersions(int minVersions);
|
||||||
|
|
||||||
|
long getTimeToPurgeDeletes();
|
||||||
|
|
||||||
|
void setTimeToPurgeDeletes(long ttl);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a copy of the Scan object. Modifying it will have no effect.
|
* Returns a copy of the Scan object. Modifying it will have no effect.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -745,6 +745,7 @@ public class SimpleRegionObserver implements RegionCoprocessor, RegionObserver {
|
||||||
options.setMinVersions(TestRegionCoprocessorHost.MIN_VERSIONS);
|
options.setMinVersions(TestRegionCoprocessorHost.MIN_VERSIONS);
|
||||||
options.setKeepDeletedCells(KeepDeletedCells.TRUE);
|
options.setKeepDeletedCells(KeepDeletedCells.TRUE);
|
||||||
options.setTTL(TestRegionCoprocessorHost.TTL);
|
options.setTTL(TestRegionCoprocessorHost.TTL);
|
||||||
|
options.setTimeToPurgeDeletes(TestRegionCoprocessorHost.TIME_TO_PURGE_DELETES);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,7 @@ public class TestRegionCoprocessorHost {
|
||||||
public static final int MAX_VERSIONS = 3;
|
public static final int MAX_VERSIONS = 3;
|
||||||
public static final int MIN_VERSIONS = 2;
|
public static final int MIN_VERSIONS = 2;
|
||||||
public static final int TTL = 1000;
|
public static final int TTL = 1000;
|
||||||
|
public static final int TIME_TO_PURGE_DELETES = 2000;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws IOException {
|
public void setup() throws IOException {
|
||||||
|
@ -203,6 +204,7 @@ public class TestRegionCoprocessorHost {
|
||||||
assertEquals(MAX_VERSIONS, newScanInfo.getMaxVersions());
|
assertEquals(MAX_VERSIONS, newScanInfo.getMaxVersions());
|
||||||
assertEquals(MIN_VERSIONS, newScanInfo.getMinVersions());
|
assertEquals(MIN_VERSIONS, newScanInfo.getMinVersions());
|
||||||
assertEquals(TTL, newScanInfo.getTtl());
|
assertEquals(TTL, newScanInfo.getTtl());
|
||||||
|
assertEquals(TIME_TO_PURGE_DELETES, newScanInfo.getTimeToPurgeDeletes());
|
||||||
}
|
}
|
||||||
|
|
||||||
private ScanInfo getScanInfo() {
|
private ScanInfo getScanInfo() {
|
||||||
|
|
Loading…
Reference in New Issue