You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Benjamin Reed (Commented) (JIRA)" <ji...@apache.org> on 2012/02/08 07:28:59 UTC

[jira] [Commented] (ZOOKEEPER-1366) Zookeeper should be tolerant of clock adjustments

    [ https://issues.apache.org/jira/browse/ZOOKEEPER-1366?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13203309#comment-13203309 ] 

Benjamin Reed commented on ZOOKEEPER-1366:
------------------------------------------

agreed. i think also that you can still mock a static api if you provide a method and interface to allow the implementation to get the time from a user provided object. but again that is a different issue.

for now i would really really like to get this in asap. it's a shame that it missed the next release since this is a real problem that we have a fix for. even without the C client, the big problem is what happens at the server with the session timeouts and this patch fixes that problem.
                
> 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
>            Assignee: Ted Dunning
>             Fix For: 3.5.0
>
>         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