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

Reply via email to