xcangCRM commented on a change in pull request #1381: HBASE-23678 : Builder API 
for version management - setVersionsWithTim…
URL: https://github.com/apache/hbase/pull/1381#discussion_r401105409
 
 

 ##########
 File path: 
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMinVersions.java
 ##########
 @@ -528,80 +530,147 @@ public void testMinVersionsWithKeepDeletedCellsTTL() 
throws Exception {
     int ttl = 4;
     ColumnFamilyDescriptor cfd =
       ColumnFamilyDescriptorBuilder.newBuilder(c0)
-        
.setMinVersions(2).setMaxVersions(Integer.MAX_VALUE).setTimeToLive(ttl).
-        setKeepDeletedCells(KeepDeletedCells.TTL).build();
+        .setVersionsWithTimeToLive(ttl, 2).build();
+    verifyVersionedCellKeyValues(ttl, cfd);
+
+    cfd = ColumnFamilyDescriptorBuilder.newBuilder(c0)
+      .setMinVersions(2)
+      .setMaxVersions(Integer.MAX_VALUE)
+      .setTimeToLive(ttl)
+      .setKeepDeletedCells(KeepDeletedCells.TTL)
+      .build();
+    verifyVersionedCellKeyValues(ttl, cfd);
+  }
 
+  private void verifyVersionedCellKeyValues(int ttl, ColumnFamilyDescriptor 
cfd)
+      throws IOException {
     TableDescriptor htd = TableDescriptorBuilder.
       
newBuilder(TableName.valueOf(name.getMethodName())).setColumnFamily(cfd).build();
 
     HRegion region = hbu.createLocalHRegion(htd, null, null);
 
-    long startTS = EnvironmentEdgeManager.currentTime();
-    ManualEnvironmentEdge injectEdge = new ManualEnvironmentEdge();
-    injectEdge.setValue(startTS);
-    EnvironmentEdgeManager.injectEdge(injectEdge);
+    try {
+      long startTS = EnvironmentEdgeManager.currentTime();
+      ManualEnvironmentEdge injectEdge = new ManualEnvironmentEdge();
+      injectEdge.setValue(startTS);
+      EnvironmentEdgeManager.injectEdge(injectEdge);
+
+      long ts = startTS - 2000;
+      putFourVersions(region, ts);
+
+      Get get;
+      Result result;
+
+      //check we can still see all versions before compaction
+      get = new Get(T1);
+      get.readAllVersions();
+      get.setTimeRange(0, ts);
+      result = region.get(get);
+      checkResult(result, c0, T4, T3, T2, T1);
+
+      region.flush(true);
+      region.compact(true);
+      Assert.assertEquals(startTS, EnvironmentEdgeManager.currentTime());
+      long expiredTime = EnvironmentEdgeManager.currentTime() - ts - 4;
+      Assert.assertTrue("TTL for T1 has expired", expiredTime < (ttl * 1000));
+      //check that nothing was purged yet
+      verifyBeforeCompaction(region, ts);
+
+      injectEdge.incValue(ttl * 1000);
+
+      region.flush(true);
+      region.compact(true);
+      verifyAfterTtl(region, ts);
+
 
 Review comment:
   extra space line

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to