[
https://issues.apache.org/jira/browse/SOLR-10619?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15999326#comment-15999326
]
Cao Manh Dat commented on SOLR-10619:
-------------------------------------
[~dragonsinth] "singleConsumer" ( multiple producer single consumer ) means
many thread enqueue data to DQ but only one thread remove ( process ) message
from DQ.
The scenario here is whenever we call to {{firstChild()}} ( {{peek}} or
{{poll}} ) with {{isDirty}} state equals true. We always {{fetchZkChildren}}
even when {{knowChildren}} is not empty. This is wasteful in case of
Overseer.DQ ( single consumer ), ex:
- {{knowChildren}} already have 20,000 elements
- some other thread offer one more element to the queue,
- childWatcher is kicked off in the Overseer.DQ, so {{isDirty}} state is set to
true
- the next time we call {{peek}}, {{fetchZkChildren}} is called to refill
{{knowChildren}} with 20,001 elements
> When DQ.knowChildren is not empty, DQ should not refetch node children in
> case of single consumer
> -------------------------------------------------------------------------------------------------
>
> Key: SOLR-10619
> URL: https://issues.apache.org/jira/browse/SOLR-10619
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Reporter: Cao Manh Dat
> Assignee: Cao Manh Dat
> Attachments: SOLR-10619.patch, SOLR-10619.patch
>
>
> Right now, for every time childWatcher is kicked off. We refetch all children
> of DQ's node. It is a wasted in case of single consumer.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]