Chris M. Hostetter created SOLR-17478: -----------------------------------------
Summary: ZkTestServer bugs can cause 30sec test pauses Key: SOLR-17478 URL: https://issues.apache.org/jira/browse/SOLR-17478 Project: Solr Issue Type: Test Security Level: Public (Default Security Level. Issues are Public) Reporter: Chris M. Hostetter Pop Quiz: which of these two (psuedo-code) ZK based test classes will be faster... {code:java} public class Test_X extends SolrTestCase { public void test() throws Exception { ZkTestServer zkServer = new ZkTestServer(createTempDir()); zkServer.run(); zkServer.shutdown(); } } public class Test_Y extends SolrTestCaseJ4 { public void test() throws Exception { ZkTestServer zkServer = new ZkTestServer(createTempDir()); zkServer.run(); zkServer.shutdown(); } } {code} ...if you guessed "Test_X, because SolrTestCase has less overhead then SolrTestCaseJ4" then you are *wrong by ~30 seconds.* Actually, that's not _always_ true: if you run both tests in the same JVM then they will both take the same amount of time: * If Test_Y runs first, they will both take ~1 second each * If Test_X runs first, they will both take 30+ seconds *_each_* The reason for the dependency comes down to: * The {{"zookeeper.4lw.commands.whitelist"}} sysprop is set/cleared in SolrTestCaseJ4 (BeforeClass/AfterClass), but _NOT_ in SolrTestCase * ZkTestServer depends on the ZK helper methods {{ClientBase.waitForServerUp()}} which depends on the 4LW {{"stat"}} being whitelisted ** If "stat" is not whitelisted, then {{waitForServerUp()}} timesout after 30 sec and return a failure ** Bonus problem: ZkTestServer never checks of the return value of {{waitForServerUp()}} ! * Zookeeper only checks for the 4LW whitelist sysprop the first time it's needed by the {{FourLetterCommands}} class _and then caches it staticly_ ** So if the first testclass to run a ZK server doesn't extend SolrTestCaseJ4, then _every_ test that uses ZkTestServer in that JVM will stall for 30 seconds -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For additional commands, e-mail: issues-h...@solr.apache.org