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

Reply via email to