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=16168933#comment-16168933

ASF GitHub Bot commented on TEPHRA-263:

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

    --- Diff: tephra-hbase-compat-1.0/src/test/java/org/apache/tephra/hbase/coprocessor/TransactionVisibilityFilterTest.java
    @@ -290,44 +290,52 @@ private void runFilteringTest(TxFilterFactory txFilterFactory,
       public void testTTLFiltering() throws Exception {
         Map<byte[], Long> ttls = Maps.newTreeMap(Bytes.BYTES_COMPARATOR);
    -    ttls.put(FAM, 10L);
    -    ttls.put(FAM2, 30L);
    +    ttls.put(FAM, 100L);
    +    ttls.put(FAM2, 300L);
         ttls.put(FAM3, 0L);
    +    // start a transaction to populate the in-progress list. It should not affect TTL
    +    txManager.startShort();
    +    // commit a transaction, just to move the readPointer. Otherwise, the TransactionVisibilityFilter
will filter
    +    // based upon the readPointer being smaller than the tested values, whereas we want
to test the TTL filtering
    +    Transaction superShortTx = txManager.startShort();
    --- End diff --
    actually, you don't really need the txManager for this test. You can simply construct
a transaction that has the desired properties. 

> 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

View raw message