[
https://issues.apache.org/jira/browse/OAK-5626?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15861226#comment-15861226
]
Stefan Egli commented on OAK-5626:
----------------------------------
bq. My concern is that this would lead to almost every commit leading to those
WARN flooding the logs.
Agreed, I had the same thought.
bq. But, this part lies in fairly critical section - I'm not sure of getting
time can be expensive or not?
Agreed, not sure if it's a problem though.
But one possible alternative might be to move the time check to the
[{{removed()}}|https://github.com/apache/jackrabbit-oak/blob/4eac76dcbb262f10af9202cdcbc3e95dee40107a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java#L303]
case. It would get a bit unprecise and more tricky to implement, but
{{removed()}} is called asynchronously and therefore less time critical.
So above could be eg implemented "modCnt" style using {{logCnt}},
{{suppressCnt}} and {{lastSuppressTime}} as follows:
* {{logCnt}} tracks number of those log.warns and log.warn is only issued if
{{logCnt<=suppressCnt}}, in which case it then does {{logCnt = suppressCnt +
1}} (thus logCnt is maintained by the "add" thread only)
* the "remove" thread takes note of logCnt incrementing, measures time
({{lastSuppressTime}}), and would increment suppressCnt only after eg 5min (so
time is only ever checked in the remove thread).
Not super nice, but possible
> ChangeProcessor doesn't reset 'blocking' flag when items from queue gets
> removed and commit-rate-limiter is null
> ----------------------------------------------------------------------------------------------------------------
>
> Key: OAK-5626
> URL: https://issues.apache.org/jira/browse/OAK-5626
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: core
> Reporter: Vikas Saurabh
> Assignee: Vikas Saurabh
> Priority: Minor
>
> Following up on conversation at \[0]:
> {{ChangeProcessor#queueSizeChanged}} \[1] sets blocking flag to true if queue
> size is hit (or beyond). The warning "Revision queue is full. Further
> revisions will be compacted." is logged only when it *wasn't*
> blocking.
> BUT, when queue empties, blocking flag is reset inside if block for
> commitRateLimiter!=null. That means an event chain like:
> # qFull
> # log warn
> # qEmpties
> # qFull
> won't log the WARN after step(4)
> \[0]: http://markmail.org/message/hgein5g3ohyjhw5n
> \[1]:
> https://github.com/apache/jackrabbit-oak/blob/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java#L307
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)