[
https://issues.apache.org/jira/browse/OAK-3587?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14991094#comment-14991094
]
Chetan Mehrotra commented on OAK-3587:
--------------------------------------
Further I think we should think about using a fair semaphore so that a thread
does not get starved while waiting to acquire lock. Current semaphore is non
fair and there are chances that it can starve threads. Would try to collect
more stats around this
> SegmentNodeStore should ensure that checkpoint is issued in case of frequent
> writes by taking an exclusive lock
> ---------------------------------------------------------------------------------------------------------------
>
> Key: OAK-3587
> URL: https://issues.apache.org/jira/browse/OAK-3587
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: segmentmk
> Reporter: Chetan Mehrotra
> Assignee: Alex Parvulescu
> Fix For: 1.3.10, 1.2.8, 1.0.24
>
> Attachments: OAK-3587-v2.patch, OAK-3587.patch
>
>
> AsyncIndexUpdate proceeds with an indexing cycle only if the NodeStore issues
> a checkpoint. A NodeStore implementation can issue a checkpoint but for it to
> be valid the caller must fetch NodeState for that checkpoint. If a non null
> NodeState is found it indicates that checkpoint is valid.
> With SegmentNodeStore its possible under high write conditions that
> checkpoint issues is not valid as it only attempts an optimistic lock. This
> can cause unbounded delays in acquiring a valid checkpoint and thus cause
> delay in AsyncIndexUpdate cycle and that causes effect on queries which rely
> on such async indexes.
> Instead of doing an optimistic lock it should attempt to acquire an exclusive
> lock. See [1] for some more details on checkpoint behaviour
> [1] http://markmail.org/thread/c7zo3zju7e2hakg4
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)