jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefan Egli (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OAK-1497) JackrabbitEvent#isExternal() returns true for internal changes for slow listeners
Date Wed, 05 Mar 2014 09:10:44 GMT

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

Stefan Egli commented on OAK-1497:

more options, that would keep knowledge about internal vs external:

5. change the batching behavior: when the queue overflows, dont auto-convert everything into
one pseudo-external event, but continue trying to separate internal from external events and
batch them separately. This way isExternal() would again reflect internal vs external. Downside
is of course that the queue can continue filling up after the limit was reached (as internal/external
events can only be batched separately, ie I-I-I-E-E-I-E-I-E-I-I-I-E-E-E-E would result in
3I-2E-I-E-I-E-3I-4E), ie the limit would be downgraded to a soft limit
6. persist-on-overflow: if one of the listener's queue overflows, the events (commit number..)
would be persisted. Thus retaining internal vs external information. Since the order of events
is the same for all listeners, only one such 'slow listeners event queue' would be needed
and all slow listeners could read from the same. I guess this would effectively be journaling.
Cleanup would be tricky maybe.

> JackrabbitEvent#isExternal() returns true for internal changes for slow listeners
> ---------------------------------------------------------------------------------
>                 Key: OAK-1497
>                 URL: https://issues.apache.org/jira/browse/OAK-1497
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>            Reporter: Michael Dürig
>             Fix For: 0.18
> Oak degrades gracefully for observation listeners that can't keep up with the rate of
observation events fired. See {{BackgroundObserver#contentChanged}} for the gory details.

> As a side effect {{JackrabbitEvent#isExternal}} will always return {{true}} when this
degradation happens. However there is currently no way for clients to detect this and to thus
know whether the result of {{JackrabbitEvent#isExternal}} is reliable or not. 

This message was sent by Atlassian JIRA

View raw message