[
https://issues.apache.org/jira/browse/SOLR-8323?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15180368#comment-15180368
]
Scott Blum commented on SOLR-8323:
----------------------------------
- Why is DocCollection.isFullyActive() static?
bq. stateWatchers.putIfAbsent(collection, Collections.synchronizedList(new
ArrayList<>()));
- You want computeIfAbsent() here to avoid the allocations.
- If waitForState() exits with the TimeoutException, the watcher never gets
removed.
- There is a fundamental problem with how interestingCollections is getting
managed now; there are external controls on that set, but now it's mixed up
with the CollectionStateWatcher API. As an example, CollectionStateWatcher
adds but never removes; and an external caller could call removeZkWatcher on a
collection that there's a listener for.
- The way the code is structured with setCreationWatch and refreshAndWatch
doesn't make sense to me. Why in the heck are they recursive? I don't think
you need all this. I suspect what you really want is to move the call to
notifyStateWatchers() and handle it more intelligently to not fire events if
the state hasn't actually changed. Basically, you want to call
notifyStateWatchers() from within updateWatchedCollection() exactly at the 3
points we're emitting log messages.
> Add CollectionWatcher API to ZkStateReader
> ------------------------------------------
>
> Key: SOLR-8323
> URL: https://issues.apache.org/jira/browse/SOLR-8323
> Project: Solr
> Issue Type: Improvement
> Affects Versions: master
> Reporter: Alan Woodward
> Attachments: SOLR-8323.patch, SOLR-8323.patch
>
>
> An API to watch for changes to collection state would be a generally useful
> thing, both internally and for client use.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]