Stefan Egli created OAK-8627:
--------------------------------
Summary: Avoid late-arriving lastRev update from crashed instance
Key: OAK-8627
URL: https://issues.apache.org/jira/browse/OAK-8627
Project: Jackrabbit Oak
Issue Type: Bug
Components: documentmk
Affects Versions: 1.16.0
Reporter: Stefan Egli
Assignee: Stefan Egli
Recently a deployment with a two node cluster showed a Sling Discovery Oak with
a cluster view that had a clusterId stuck in the deactivating state.
According to the entry in the clusterNodes collection, the clusterId in the
deactivating state was inactive. However, the revisions for the _lastRev entry
on the root document and the lastWrittenRootRev did not match. The latter was
slightly more recent. This caused the Sling Discovery Oak to consider the
clusterId as not entirely shut down.
While there is no direct proof, one theoretical scenario [~mreutegg] identified
as a _potential_ root cause was that it can happen that the lastRev for a
clusterId on the root document is set back to an earlier value due to a race
condition:
Before the lease expiry, the backgorund update thread could have issued an
update for the root document, which then took a very long time to reach the
DocumentStore, longer than the lease timeout and recovery which must have been
done by another instance meanwhile.
If such a late-arriving update of the {{_lastRev}} is possible, then the reset
of the lastRev value on the root document could be explained, since the update
is currently done unconditionally.
--
This message was sent by Atlassian Jira
(v8.3.2#803003)