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

Reply via email to