[
https://issues.apache.org/jira/browse/TEPHRA-263?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16169219#comment-16169219
]
ASF GitHub Bot commented on TEPHRA-263:
---------------------------------------
Github user chtyim commented on a diff in the pull request:
https://github.com/apache/incubator-tephra/pull/61#discussion_r139303849
--- 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);
--- End diff --
the `maxTTL` should be capped by `Math.min(maxTTL, Long.MAX_VALUE /
ttlFactor)`, right?
> 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)