[ 
https://issues.apache.org/jira/browse/TEPHRA-263?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16170578#comment-16170578
 ] 

ASF GitHub Bot commented on TEPHRA-263:
---------------------------------------

Github user poornachandra commented on a diff in the pull request:

    https://github.com/apache/incubator-tephra/pull/61#discussion_r139523472
  
    --- Diff: 
tephra-hbase-compat-1.0/src/main/java/org/apache/tephra/hbase/coprocessor/TransactionVisibilityFilter.java
 ---
    @@ -89,13 +89,13 @@ public TransactionVisibilityFilter(Transaction tx, 
Map<byte[], Long> ttlByFamily
        *                   {@link Filter.ReturnCode#INCLUDE_AND_NEXT_COL} will 
be returned instead.
        */
       public TransactionVisibilityFilter(Transaction tx, Map<byte[], Long> 
ttlByFamily, boolean allowEmptyValues,
    -                              ScanType scanType, @Nullable Filter 
cellFilter) {
    +                                     ScanType scanType, @Nullable Filter 
cellFilter) {
         this.tx = tx;
         this.oldestTsByFamily = Maps.newTreeMap();
         for (Map.Entry<byte[], Long> ttlEntry : ttlByFamily.entrySet()) {
           long familyTTL = ttlEntry.getValue();
           oldestTsByFamily.put(new ImmutableBytesWritable(ttlEntry.getKey()),
    -                           familyTTL <= 0 ? 0 : 
tx.getVisibilityUpperBound() - familyTTL * TxConstants.MAX_TX_PER_MS);
    +                           familyTTL <= 0 ? 0 : tx.getTransactionId() - 
familyTTL * TxConstants.MAX_TX_PER_MS);
    --- End diff --
    
    We can have -ve timestamps here too


> TTL is not strictly enforced, if there are long transactions running
> --------------------------------------------------------------------
>
>                 Key: TEPHRA-263
>                 URL: https://issues.apache.org/jira/browse/TEPHRA-263
>             Project: Tephra
>          Issue Type: Bug
>            Reporter: Ali Anwar
>            Assignee: Ali Anwar
>
> The logic for filtering for TTL:
> https://github.com/apache/incubator-tephra/blob/release/0.12.0-incubating/tephra-core/src/main/java/org/apache/tephra/util/TxUtils.java#L66
> It is subtracting the TTL duration from the visibility upper bound, but it 
> should be subtracting from the current time or the current write pointer 
> instead. Otherwise, if the TTL is 1 hour, but the visibility upper bound is 
> 22 hours ago (due to some MR that has been in progress for 22 hours), then 
> the TTL that is actually enforced will be 23 hours and older data will be 
> filtered.
> After the long transactions are invalidated, the TTL is then strictly 
> enforced.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to