patsonluk opened a new pull request, #909: URL: https://github.com/apache/solr/pull/909
https://issues.apache.org/jira/browse/SOLR-16257 # Description As described in the Jira issue, `ZkStateReader` fields `collectionWatches` and `watchedCollectionStates` can run into race conditions. And such condition might produce stale `clusterState` for some collection which can no longer be updated (until a new watch is registered for such collection) The existing design is intended to synchronize the 2 map fields `watchedCollectionStates` and `collectionWatches` (ie if a collection is no longer watched in `collectionWatches`, then no entry for that collection should exist in `watchedCollectionStates`). However, it is hard to guarantee such "synchronization", one way to break it is demonstrated in "Steps to reproduce a race condition" within the Jira issue # Solution Perhaps it's easier to simply eliminate `watchedCollectionStates` and add such `state` (as `DocCollection`) to the `CollectionWatch` itself (now added a new class `DocCollectionWatch` with contains a ref to the `DocCollection`) , such that we no longer need to worry about entry removed in `collectionWatches` somehow still remains in `watchedCollectionStates` # Tests No extra test cases yet. Will update. # Checklist Please review the following and check all that apply: - [x] I have reviewed the guidelines for [How to Contribute](https://wiki.apache.org/solr/HowToContribute) and my code conforms to the standards described there to the best of my ability. - [x] I have created a Jira issue and added the issue ID to my pull request title. - [ ] I have given Solr maintainers [access](https://help.github.com/en/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork) to contribute to my PR branch. (optional but recommended) - [x] I have developed this patch against the `main` branch. - [ ] I have run `./gradlew check`. - [ ] I have added tests for my changes. - [ ] I have added documentation for the [Reference Guide](https://github.com/apache/solr/tree/main/solr/solr-ref-guide) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For additional commands, e-mail: issues-h...@solr.apache.org