Yea, thread sleep (without some sort of retry/timeout logic) is an antipattern. Committers - please be on the lookout for such things and flag them during review as they are a significant cause of flakeys. In a heavily loaded or virtualized environment even seconds can be insufficient.
QuorumTest line 320 or so is a better example. In many places we use countdownlatches instead... I see someone attempted to add "waitFor" but it never caught on? Might be better approach. zookeeper-server/src/test/java/org/apache/zookeeper/ZKTestCase.java 95: public void waitFor(String msg, WaitForCondition condition, int timeout) Patrick On Mon, Jul 22, 2019 at 1:47 AM Andor Molnar <[email protected]> wrote: > Hi team, > > New test testLearnerMetricsTest() added by the following commit failed 2 > times on master with the same error: > > junit.framework.AssertionFailedError: expected:<10> but was:<9> > at > org.apache.zookeeper.server.quorum.LearnerMetricsTest.testLearnerMetricsTest(LearnerMetricsTest.java:88) > at > org.apache.zookeeper.JUnit4ZKTestRunner$LoggedInvokeMethod.evaluate(JUnit4ZKTestRunner.java:80) > > https://github.com/apache/zookeeper/pull/856 > Submitted by: jhuan31 > > Maybe we should just blame the Thread.sleep(200) in line:77 and replace it > with some clever logic. > Please take a look. > > Regards, > Andor > > >
