[
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
(v6.2#6252)