This is an automated email from the ASF dual-hosted git repository.

dsmiley pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 93e08dc9eb9 SOLR-17706: DocumentObjectBinder: revert computeIfAbsent
93e08dc9eb9 is described below

commit 93e08dc9eb95c216183fac63fa7c76792a23e491
Author: David Smiley <[email protected]>
AuthorDate: Tue Mar 25 21:59:31 2025 -0400

    SOLR-17706: DocumentObjectBinder: revert computeIfAbsent
    
    Because there can be recursion.
---
 .../org/apache/solr/client/solrj/beans/DocumentObjectBinder.java | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/beans/DocumentObjectBinder.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/beans/DocumentObjectBinder.java
index fabcfee587f..3b0e022832f 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/beans/DocumentObjectBinder.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/beans/DocumentObjectBinder.java
@@ -136,7 +136,14 @@ public class DocumentObjectBinder {
   }
 
   private List<DocField> getDocFields(Class<?> clazz) {
-    return infoCache.computeIfAbsent(clazz, this::collectInfo);
+    // can't use computeIfAbsent because collectInfo may recursively call 
getDocFields
+    List<DocField> fields = infoCache.get(clazz);
+    if (fields == null) {
+      synchronized (infoCache) {
+        infoCache.put(clazz, fields = collectInfo(clazz));
+      }
+    }
+    return fields;
   }
 
   @SuppressWarnings("removal")

Reply via email to