You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Alex Parvulescu (JIRA)" <ji...@apache.org> on 2015/11/04 17:49:28 UTC

[jira] [Updated] (OAK-3587) SegmentNodeStore should ensure that checkpoint is issued in case of frequent writes by taking an exclusive lock

     [ https://issues.apache.org/jira/browse/OAK-3587?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alex Parvulescu updated OAK-3587:
---------------------------------
    Attachment: OAK-3587.patch

attaching proposed patch to collect some initial feedback. 

this goes the way of the compaction stuff, adding some flags to control the behavior (number of tried, to force or not, seconds to wait for the lock). I also covered the case where one would set the number of tries to zero so checkpoint creation will skip to the part where it will try to force the commit.
[~chetanm] thoughts?

> 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.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)