madrob commented on code in PR #909:
URL: https://github.com/apache/solr/pull/909#discussion_r915147046


##########
solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java:
##########
@@ -246,6 +244,90 @@ public boolean canBeRemoved() {
     }
   }
 
+  /**
+   * A ConcurrentHashMap of active watcher by collection name
+   *
+   * <p>Each watcher DocCollectionWatch also contains the latest DocCollection 
(state) observed
+   */
+  private static class DocCollectionWatches
+      extends ConcurrentHashMap<String, 
DocCollectionWatch<DocCollectionWatcher>> {

Review Comment:
   You covered it pretty nicely, Houston.
   
   The main concern is really about future maintainability. Right now we're 
handling it fine and the boundaries are clear and we're not doing anything that 
we're not supposed to be doing. But the risk is that at some point this class 
ends up getting treated like any other Map (if it gets passed or returned 
somewhere) and people start calling map methods on it. Then any additional 
internal state that we're keeping (which right now it doesn't look like there 
is any) can get messed up. For example, if we had a variable tracking the 
number of watches fired and somebody else added a new entry to the map without 
using our abstractions then our count would be off. So we want to expose the 
things meant to be exposed and encapsulate the rest.
   
   Hopefully that is clear enough, it's a lot of text and I'm not sure if I 
made it worse.



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