[ https://issues.apache.org/jira/browse/CASSANDRA-10139?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14706028#comment-14706028 ]
Paulo Motta commented on CASSANDRA-10139: ----------------------------------------- I ran the test multiple times on Windows, and it passes, so this problem happens mostly on CI (intermittently). I found a minor bug in the test, in the assignment of the {{nowNanos}} variable: {code} nowNanos = Math.max(now, System.nanoTime()); {code} But {{now}} is actually {{System.currentTimeMillis()}}, so it will always be smaller than {{System.naoTime()}}. I changed the assignment to: {code} nowNanos = Math.max(nowNanos, System.nanoTime()); {code} This could be the cause of the failures, if there is a clock synchronization service running on WIndows, but I'm not sure of that. I think this might be caused by difference in the clock resolution on Linux and Windows. In the latest test failures there were the following time differences: * convertedNow - lastConverted = [11ms|http://cassci.datastax.com/view/win32/job/cassandra-2.2_utest_win32/77/testReport/org.apache.cassandra.utils/NanoTimeToCurrentTimeMillisTest/testTimestampOrdering/], [6ms|http://cassci.datastax.com/view/win32/job/cassandra-2.2_utest_win32/77/testReport/org.apache.cassandra.utils/NanoTimeToCurrentTimeMillisTest/testTimestampOrdering/] * convertedNow - now = [23ms|http://cassci.datastax.com/view/win32/job/cassandra-2.2_utest_win32/16/testReport/org.apache.cassandra.utils/NanoTimeToCurrentTimeMillisTest/testTimestampOrdering/], [17ms|http://cassci.datastax.com/view/win32/job/cassandra-2.2_utest_win32/53/testReport/org.apache.cassandra.utils/NanoTimeToCurrentTimeMillisTest/testTimestampOrdering/], [19ms|http://cassci.datastax.com/view/win32/job/cassandra-2.2_utest_win32/37/testReport/org.apache.cassandra.utils/NanoTimeToCurrentTimeMillisTest/testTimestampOrdering/], [5ms|http://cassci.datastax.com/view/win32/job/cassandra-2.2_utest_win32/91/testReport/org.apache.cassandra.utils/NanoTimeToCurrentTimeMillisTest/testTimestampOrdering/] Based on these numbers, I added a tolerance on WIndows of 25ms for {{convertedNow - now}} and a tolerance of 15ms for {{convertedNow - lastConverted}}. These numbers are more or less accurate with the section *Clocks and Timers on Windows* of this [oracle blog post|https://blogs.oracle.com/dholmes/entry/inside_the_hotspot_vm_clocks]: bq. On WIndows, System.currentTimeMillis() is updated at a constant rate regardless of how the timer interrupt has been programmed - depending on the platform this will either be 10ms or 15ms (this value seems tied to the default interrupt period). The patch is available [here|https://github.com/apache/cassandra/compare/cassandra-2.2...pauloricardomg:10139-2.2] for review. Unit tests are available below: * [2.2|http://cassci.datastax.com/view/Dev/view/paulomotta/job/pauloricardomg-10139-2.2-testall/lastCompletedBuild/testReport/] * [3.0|http://cassci.datastax.com/view/Dev/view/paulomotta/job/pauloricardomg-10139-3.0-testall/lastCompletedBuild/testReport/] * [trunk|http://cassci.datastax.com/view/Dev/view/paulomotta/job/pauloricardomg-10139-trunk-testall/lastCompletedBuild/testReport/] Adding [~aweisberg] as reviewer, since he is the original author of the test. > Windows utest 2.2: NanoTimeToCurrentTimeMillisTest.testTimestampOrdering > intermittent failure > --------------------------------------------------------------------------------------------- > > Key: CASSANDRA-10139 > URL: https://issues.apache.org/jira/browse/CASSANDRA-10139 > Project: Cassandra > Issue Type: Bug > Reporter: Joshua McKenzie > Assignee: Paulo Motta > Labels: Windows > Fix For: 2.2.x > > > {noformat} > now = 1440076083035 convertedNow = 1440076083032 in iteration 8890001 > junit.framework.AssertionFailedError: now = 1440076083035 convertedNow = > 1440076083032 in iteration 8890001 > at > org.apache.cassandra.utils.NanoTimeToCurrentTimeMillisTest.testTimestampOrdering(NanoTimeToCurrentTimeMillisTest.java:48) > {noformat} > History: > [intermittent|http://cassci.datastax.com/view/cassandra-2.2/job/cassandra-2.2_utest_win32/lastCompletedBuild/testReport/org.apache.cassandra.utils/NanoTimeToCurrentTimeMillisTest/testTimestampOrdering/history/] -- This message was sent by Atlassian JIRA (v6.3.4#6332)