[
https://issues.apache.org/jira/browse/OAK-2682?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stefan Egli updated OAK-2682:
-----------------------------
Attachment: OAK-2682.patch
oak-core [^OAK-2682.patch] attached which introduces:
* {{determineServerTimeDifferenceMillis()}}: @return the estimated time
difference in milliseconds between the local instance and the (typically
common, shared) document server system.
** plus exposed via {{DocumentNodeStoreMBean}}
* the implementation of the above in {{MongoDocumentStore}} plus
{{MemoryDocumentStore}} (the latter is a trivial return 0)
* {{RDBDocumentStore}} currently throws a {{new
UnsupportedOperationException()}}
* {{DocumentNodeStore}} does this check now at startup and refuses to start if
more than default of {{2000ms}} off (configurable via
{{oak.documentMK.maxServerTimeDiffMillis}} system property)
/cc [~chetanm], [~mreutegg], [~reschke], pls review - I'd commit as soon as I
get some positive feedback
> Introduce time difference detection for DocumentNodeStore
> ---------------------------------------------------------
>
> Key: OAK-2682
> URL: https://issues.apache.org/jira/browse/OAK-2682
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: core, mongomk
> Reporter: Stefan Egli
> Assignee: Stefan Egli
> Labels: resilience
> Fix For: 1.3.5
>
> Attachments: OAK-2682.patch
>
>
> Currently the lease mechanism in DocumentNodeStore/mongoMk is based on the
> assumption that the clocks are in perfect sync between all nodes of the
> cluster. The lease is valid for 60sec with a timeout of 30sec. If clocks are
> off by too much, and background operations happen to take couple seconds, you
> run the risk of timing out a lease. So introducing a check which WARNs if the
> clocks in a cluster are off by too much (1st threshold, eg 5sec?) would help
> increase awareness. Further drastic measure could be to prevent a startup of
> Oak at all if the difference is for example higher than a 2nd threshold
> (optional I guess, but could be 20sec?).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)