dsmiley commented on code in PR #2856:
URL: https://github.com/apache/solr/pull/2856#discussion_r1835195200


##########
solr/core/src/java/org/apache/solr/util/DataConfigNode.java:
##########
@@ -54,31 +53,17 @@ public DataConfigNode(ConfigNode root) {
         e.setValue(List.copyOf(e.getValue()));
       }
     }
-    this.kids = kids.isEmpty() ? EMPTY : new 
WrappedSimpleMap<>(Map.copyOf(kids));
+    this.kids = Map.copyOf(kids);
   }
 
-  public String subtituteVal(String s) {
+  private static String substituteVal(String s) {
     return PropertiesUtil.substitute(s, SUBSTITUTES.get());

Review Comment:
   This particular aspect of the design of ConfigNode framework is, um, ... 
really concerning to me:  a ThreadLocal to hold the substitution rules.  
**Wow**, so depending on which thread is *looking*(using) the map, they get 
different answers?!  @noblepaul can you offer an explanation as to why it's 
this way instead of a normal field on the ConfigNode?  This design has me 
concerned with respect to this PR since there were some Map conversions (via 
`asMap` which surprisingly creates a new Map; isn't a view) that maybe are now 
a view; I need to check.  The difference is that previously the value would be 
materialized using the ThreadLocal of whoever called asMap but now would be 
whoever is looking at the values.  Subtle!



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