[ https://issues.apache.org/jira/browse/ZOOKEEPER-1366?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13190837#comment-13190837 ]
Camille Fournier commented on ZOOKEEPER-1366: --------------------------------------------- So in general, I think this is a good patch and a very good thing for us to do. But I feel like Henry's comment is most interesting: {quote} The nice thing is that this is a small step towards a properly mockable time API in ZK, which would a) make tests much faster and b) make tests much more deterministic. There's a way to go still because of Thread.sleep and other complications, but this is a good first step. {quote} We really aren't doing all that much towards that end by replacing one static method call with another. You still can't mock that in mockito. So the only question I have here is, if we're going to touch all those places anyway, should we just be creating an actual thin object that wraps "time" and use non-static methods on that object to make these calls, in order to allow more mocking of timing issues in the future? Or should we save that for another patch? > Zookeeper should be tolerant of clock adjustments > ------------------------------------------------- > > Key: ZOOKEEPER-1366 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1366 > Project: ZooKeeper > Issue Type: Bug > Reporter: Ted Dunning > Fix For: 3.4.3 > > Attachments: ZOOKEEPER-1366-3.3.3.patch, ZOOKEEPER-1366.patch, > ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch > > > If you want to wreak havoc on a ZK based system just do [date -s "+1hour"] > and watch the mayhem as all sessions expire at once. > This shouldn't happen. Zookeeper could easily know handle elapsed times as > elapsed times rather than as differences between absolute times. The > absolute times are subject to adjustment when the clock is set while a timer > is not subject to this problem. In Java, System.currentTimeMillis() gives > you absolute time while System.nanoTime() gives you time based on a timer > from an arbitrary epoch. > I have done this and have been running tests now for some tens of minutes > with no failures. I will set up a test machine to redo the build again on > Ubuntu and post a patch here for discussion. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira