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 "Vikas Saurabh (JIRA)" <ji...@apache.org> on 2015/10/27 16:57:27 UTC

[jira] [Commented] (OAK-3372) Collapsing external events in BackgroundObserver even before queue is full leads to JournalEntry not getting used

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

Vikas Saurabh commented on OAK-3372:
------------------------------------

Discussed a few options of detecting segment/document with [~chetanm] and [~mreutegg].
* Background observer can be passed the configuration to collapse/not-collapse external events early using descriptors
* Since external event can't have non-null commit info, we might hack around and add some extra data into local events - that extra info essentially can configure the background observer. Apart from this being very hacky, it's also hard to generate solve the case when there are no local events getting generated

It seems that the solutions to differentiate segment and document store inside background observer is non-trivial. Added to that there's no concept of external event wrt segment anyway. So, it might make sense to resolve this issue with {{collapse only when queue is full}} strategy and open a new one to track {{detect mode and decide collapse behavior}} strategy. [~mduerig], wdyt?

> Collapsing external events in BackgroundObserver even before queue is full leads to JournalEntry not getting used
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: OAK-3372
>                 URL: https://issues.apache.org/jira/browse/OAK-3372
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.3.5
>            Reporter: Vikas Saurabh
>              Labels: resilience
>
> BackgroundObserver currently merges external events if the last one in queue is also an external event. This leads to diff being done for a revision pair which is different from the ones pushed actively into cache during backgroud read (using JournalEntry) i.e. diff queries for {{diff("/a/b", rA, rC)}} while background read had pushed results of {{diff("/a/b", rA, rB)}} and {{diff("/a/b", rB, rC)}}.
> (cc [~mreutegg], [~egli], [~chetanm], [~mduerig])



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)