[
https://issues.apache.org/jira/browse/CASSANDRA-14092?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16352862#comment-16352862
]
Sam Tunnicliffe commented on CASSANDRA-14092:
---------------------------------------------
I think we're almost there with this, I just have a few smallish comments on
the v5 patches:
* In the 3.0+ branches,
{{ExpirationDateOverflowHandling::maybeApplyExpirationDateOverflowPolicy}} can
use {{Cell.NO_TTL}} rather than 0 in the first check.
* In 3.0+ you renamed the static policy field to have a shorter name, but
missed that in the 2.1 & 2.2 branches.
* In 2.1 I saw some (very) intermittent test failures in TTLTest. I
instrumented {{checkTTLIsCapped}} to print out the (min | actual | max) TTLs to
sysout and eventually managed to repro it. You can see from the output that in
the first line, the min and actual are actually > the max, which caused the
test to fail (this happened around 10% of the time).
{code:java}
testlist:
[echo] running test bucket 0 tests
[junit] WARNING: multiple versions of ant detected in path for junit
[junit]
jar:file:/usr/local/Cellar/[email protected]/1.9.8/libexec/lib/ant.jar!/org/apache/tools/ant/Project.class
[junit] and
jar:file:/Users/sam/git/cassandra/build/lib/jars/ant-1.9.4.jar!/org/apache/tools/ant/Project.class
[junit] Testsuite: org.apache.cassandra.cql3.validation.operations.TTLTest
[junit] Tests run: 5, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 2.024
sec
[junit]
[junit] ------------- Standard Output ---------------
[junit] WARN 18:01:55 JNA link failure, one or more native method will be
unavailable.
[junit] WARN 18:01:55 JNA link failure, one or more native method will be
unavailable.
[junit] WARN 18:01:55 Request on table cql_test_keyspace.table_1 with default
ttl of 630720000 seconds exceeds maximum supported expiration date of
2038-01-19T03:14:06+00:00 and will have its expiration capped to that date. In
order to avoid this use a lower TTL or upgrade to a version where this
limitation is fixed. See CASSANDRA-14092 for more details.
[junit] WARN 18:01:55 Request on table cql_test_keyspace.table_1 with default
ttl of 630720000 seconds exceeds maximum supported expiration date of
2038-01-19T03:14:06+00:00 and will have its expiration capped to that date. In
order to avoid this use a lower TTL or upgrade to a version where this
limitation is fixed. See CASSANDRA-14092 for more details.
[junit] 629629931 | 629629931 | 629629930
[junit] 629629930 | 629629930 | 629629930
[junit] 629629930 | 629629930 | 629629930
[junit] 629629930 | 629629930 | 629629930
[junit] 629629930 | 629629930 | 629629930
[junit] 629629930 | 629629930 | 629629930
[junit] 629629930 | 629629930 | 629629930
[junit] 629629930 | 629629930 | 629629930
[junit] 629629930 | 629629930 | 629629930
[junit] 629629930 | 629629930 | 629629930
[junit] 629629930 | 629629930 | 629629930
[junit] 629629930 | 629629930 | 629629930
[junit] 629629930 | 629629930 | 629629930
[junit] ------------- ---------------- ---------------
[junit] Testcase:
testCapExpirationDatePolicyDefaultTTL(org.apache.cassandra.cql3.validation.operations.TTLTest):
FAILED
[junit] null
[junit] junit.framework.AssertionFailedError
[junit] at
org.apache.cassandra.cql3.validation.operations.TTLTest.checkTTLIsCapped(TTLTest.java:259)
[junit] at
org.apache.cassandra.cql3.validation.operations.TTLTest.testCapExpirationDatePolicyDefaultTTL(TTLTest.java:139)
[junit]
[junit]
{code}
The last thing is about providing a route to fix up overflowed dates via scrub,
I think we should definitely leave the remedial Scrubber code in trunk until we
have a proper fix committed. This will be in for 4.0, and at that point we can
hapilly remove it, but until then it feels wrong to not have it. I also think
we should have the scrub fix in 2.1 & 2.2 as some users have not yet moved to
3.x and they should probably get the chance to repair (maybe) their data if
they want/are able to.
> Max ttl of 20 years will overflow localDeletionTime
> ---------------------------------------------------
>
> Key: CASSANDRA-14092
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14092
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Reporter: Paulo Motta
> Assignee: Paulo Motta
> Priority: Blocker
> Fix For: 2.1.20, 2.2.12, 3.0.16, 3.11.2
>
>
> CASSANDRA-4771 added a max value of 20 years for ttl to protect against [year
> 2038 overflow bug|https://en.wikipedia.org/wiki/Year_2038_problem] for
> {{localDeletionTime}}.
> It turns out that next year the {{localDeletionTime}} will start overflowing
> with the maximum ttl of 20 years ({{System.currentTimeMillis() + ttl(20
> years) > Integer.MAX_VALUE}}), so we should remove this limitation.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]