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

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

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

    https://github.com/apache/incubator-tephra/pull/61#discussion_r139287786
  
    --- Diff: tephra-core/src/main/java/org/apache/tephra/util/TxUtils.java ---
    @@ -75,12 +75,9 @@ public static long getOldestVisibleTimestamp(Map<byte[], 
Long> ttlByFamily, Tran
        * @return The oldest timestamp that will be visible for the given 
transaction and TTL configuration
        */
       public static long getOldestVisibleTimestamp(Map<byte[], Long> 
ttlByFamily, Transaction tx, boolean readNonTxnData) {
    -    if (readNonTxnData) {
    -      long maxTTL = getMaxTTL(ttlByFamily);
    -      return maxTTL < Long.MAX_VALUE ? System.currentTimeMillis() - maxTTL 
: 0;
    -    }
    -
    -    return getOldestVisibleTimestamp(ttlByFamily, tx);
    +    long ttlFactor = readNonTxnData ? 1 : TxConstants.MAX_TX_PER_MS;
    +    long maxTTL = getMaxTTL(ttlByFamily);
    +    return maxTTL < Long.MAX_VALUE ? tx.getTransactionId() - maxTTL * 
ttlFactor : 0;
    --- End diff --
    
    this can be negative if a large TTL is used. 


> 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