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

Reply via email to