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

Henry Robinson commented on ZOOKEEPER-1366:
-------------------------------------------

Oh, and my main concern here was non-monotonicity across cores, but [this 
page|http://juliusdavies.ca/posix_clocks/clock_realtime_linux_faq.html] 
alleviates that concern for modern Linux kernels:

{quote}
1. Is clock_gettime(CLOCK_REALTIME) consistent across all processors/cores?
>    (Does arch matter?  e.g. ppc, arm, x86, amd64, sparc).
It *should* or it's considered buggy.

However, on x86/x86_64, it is possible to see unsynced or variable freq TSCs 
cause time inconsistencies. 2.4 kernels really had no protection against this, 
and early 2.6 kernels didn't do too well here either. As of 2.6.18 and up the 
logic for detecting this is better and we'll usually fall back to a safe 
clocksource.

ppc always has a synced timebase, so that shouldn't be an issue.

arm, i'm not so familiar with, but i assume they do the right thing (i've not 
seen many arm bugs on this issue).
{quote}
                
> 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.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

        

Reply via email to