Hoss Man created SOLR-13068: ------------------------------- Summary: many cloud/autoscaling tests are using System.currentTimeMillis() for timing comparisons (under the covers) Key: SOLR-13068 URL: https://issues.apache.org/jira/browse/SOLR-13068 Project: Solr Issue Type: Sub-task Security Level: Public (Default Security Level. Issues are Public) Reporter: Hoss Man
After rewriting TriggerSetPropertiesIntegrationTest in SOLR-13054 to use better concurrency handling/signalling and log the timestamps the triggers were firing at, i noticed we stil got a failure from Uwe's "Windows" jenkins machine (on the http2 branch, but after my fix was merged to that branch. The nature of the failure seemed to suggest that the JVM's {{ScheduledExecutorService.scheduleWithFixedDelay}} wasn't living up to it's contract -- and was running successive iterations before the full delay had lapsed. But then i realized that in spite of using {{timeSource.getTimeNs()}} in the test, the TimeSource (being used in the test) was a lie -- and under the covers {{System.currentTimeInMillis}} is being used (via {{TimeSource.CURRENT_TIME}} ) ... which IIUC is susceptible to clock drift, particularly in VMs like those used on Uwe's jenkins machines... Any code in the following tests that relies on the TimeSource for doing comparisons or delta calculations should be suspect... {noformat} hossman@tray:~/lucene/dev [master] $ find solr/core/src/test -name \*.java | xargs grep CURRENT_TIME solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerTest.java: private static final TimeSource timeSource = TimeSource.CURRENT_TIME; solr/core/src/test/org/apache/solr/cloud/autoscaling/ExecutePlanActionTest.java: "mock_trigger_name", Collections.singletonList(TimeSource.CURRENT_TIME.getTimeNs()), solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java: static final TimeSource timeSource = TimeSource.CURRENT_TIME; solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerTest.java: private final TimeSource timeSource = TimeSource.CURRENT_TIME; solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimExecutePlanAction.java: "mock_trigger_name", Collections.singletonList(TimeSource.CURRENT_TIME.getTimeNs()), solr/core/src/test/org/apache/solr/cloud/HttpPartitionTest.java: TimeOut timeOut = new TimeOut(ms, TimeUnit.MILLISECONDS, TimeSource.CURRENT_TIME); solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java: TimeOut timeOut = new TimeOut(10, TimeUnit.SECONDS, TimeSource.CURRENT_TIME); solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java: TimeOut timeOut = new TimeOut(10, TimeUnit.SECONDS, TimeSource.CURRENT_TIME); hossman@tray:~/lucene/dev [master] $ find -name \*.java | xargs grep TriggerIntegrationTest.timeSource ./solr/core/src/test/org/apache/solr/cloud/autoscaling/SearchRateTriggerIntegrationTest.java:import static org.apache.solr.cloud.autoscaling.TriggerIntegrationTest.timeSource; ./solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerSetPropertiesIntegrationTest.java:import static org.apache.solr.cloud.autoscaling.TriggerIntegrationTest.timeSource; ./solr/core/src/test/org/apache/solr/cloud/autoscaling/RestoreTriggerStateTest.java:import static org.apache.solr.cloud.autoscaling.TriggerIntegrationTest.timeSource; ./solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerIntegrationTest.java: long currentTimeNanos = TriggerIntegrationTest.timeSource.getTimeNs(); ./solr/core/src/test/org/apache/solr/cloud/autoscaling/MetricTriggerIntegrationTest.java:import static org.apache.solr.cloud.autoscaling.TriggerIntegrationTest.timeSource; ./solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerIntegrationTest.java: long currentTimeNanos = TriggerIntegrationTest.timeSource.getTimeNs(); ./solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerCooldownIntegrationTest.java:import static org.apache.solr.cloud.autoscaling.TriggerIntegrationTest.timeSource; {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org