tephra-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (TEPHRA-263) TTL is not strictly enforced, if there are long transactions running
Date Sat, 16 Sep 2017 14:41:00 GMT

    [ 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)

Mime
View raw message