You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2019/01/24 01:28:46 UTC
[hbase] branch branch-1 updated: HBASE-21475 Put mutation (having
TTL set) added via co-processor is retrieved even after TTL expires
This is an automated email from the ASF dual-hosted git repository.
apurtell pushed a commit to branch branch-1
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-1 by this push:
new c1c2bc2 HBASE-21475 Put mutation (having TTL set) added via co-processor is retrieved even after TTL expires
c1c2bc2 is described below
commit c1c2bc2f0acc5532915850df77d606f49ef52415
Author: Nihal Jain <ni...@gmail.com>
AuthorDate: Tue Nov 13 23:25:13 2018 +0530
HBASE-21475 Put mutation (having TTL set) added via co-processor is retrieved even after TTL expires
Signed-off-by: Andrew Purtell <ap...@apache.org>
Conflicts:
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.java
Amending-Author: Andrew Purtell <ap...@apache.org>
---
.../apache/hadoop/hbase/regionserver/HRegion.java | 1 +
...ObserverForAddingMutationsFromCoprocessors.java | 28 ++++++++++++++++++++++
2 files changed, 29 insertions(+)
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
index 0f7bd9f..b9218b6 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
@@ -3417,6 +3417,7 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
for (int j = 0; j < cpMutations.length; j++) {
Mutation cpMutation = cpMutations[j];
Map<byte[], List<Cell>> cpFamilyMap = cpMutation.getFamilyCellMap();
+ rewriteCellTags(cpFamilyMap, mutation);
checkAndPrepareMutation(cpMutation, isInReplay, cpFamilyMap, now);
// Acquire row locks. If not, the whole batch will fail.
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.java
index 3d34503..0ea78e3 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.java
@@ -194,6 +194,34 @@ public class TestRegionObserverForAddingMutationsFromCoprocessors {
}
}
+ @Test
+ public void testPutWithTTL() throws Exception {
+ createTable(TestPutWithTTLCoprocessor.class.getName());
+
+ try (Table t = util.getConnection().getTable(tableName)) {
+ t.put(new Put(row1).addColumn(test, dummy, dummy).setTTL(3000));
+ assertRowCount(t, 2);
+ // wait long enough for the TTL to expire
+ Thread.sleep(5000);
+ assertRowCount(t, 0);
+ }
+ }
+
+ public static class TestPutWithTTLCoprocessor extends BaseRegionObserver {
+ @Override
+ public void preBatchMutate(ObserverContext<RegionCoprocessorEnvironment> c,
+ MiniBatchOperationInProgress<Mutation> miniBatchOp) throws IOException {
+ Mutation mut = miniBatchOp.getOperation(0);
+ List<Cell> cells = mut.getFamilyCellMap().get(test);
+ Put[] puts = new Put[] {
+ new Put(Bytes.toBytes("cpPut")).addColumn(test, dummy, cells.get(0).getTimestamp(),
+ Bytes.toBytes("cpdummy")).setTTL(mut.getTTL())
+ };
+ LOG.info("Putting:" + Arrays.toString(puts));
+ miniBatchOp.addOperationsFromCP(0, puts);
+ }
+ }
+
public static class TestMultiMutationCoprocessor extends BaseRegionObserver {
@Override
public void preBatchMutate(ObserverContext<RegionCoprocessorEnvironment> c,