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

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


The following commit(s) were added to refs/heads/branch_10x by this push:
     new 8cca9183f4a Fix reference-equality comparison bugs found by Error 
Prone 2.50.0 (#4605)
8cca9183f4a is described below

commit 8cca9183f4a4f2948ad095592c98fa2e4e235941
Author: Jan Høydahl <[email protected]>
AuthorDate: Fri Jul 3 17:11:56 2026 +0200

    Fix reference-equality comparison bugs found by Error Prone 2.50.0 (#4605)
    
    (cherry picked from commit 6de3f80cd44f39ff7d4aea4f490d537fdc50fcf9)
---
 changelog/unreleased/PR#4605-reference-equality-fixes.yml         | 8 ++++++++
 .../java/org/apache/solr/handler/component/HttpShardHandler.java  | 2 +-
 solr/core/src/test/org/apache/solr/cloud/ZkShardTermsTest.java    | 2 +-
 .../src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java | 2 +-
 solr/solrj/src/java/org/apache/solr/common/util/Utils.java        | 2 ++
 5 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/changelog/unreleased/PR#4605-reference-equality-fixes.yml 
b/changelog/unreleased/PR#4605-reference-equality-fixes.yml
new file mode 100644
index 00000000000..6b8aa46a556
--- /dev/null
+++ b/changelog/unreleased/PR#4605-reference-equality-fixes.yml
@@ -0,0 +1,8 @@
+# See https://github.com/apache/solr/blob/main/dev-docs/changelog.adoc
+title: Fix reference-equality comparison bugs in ZkMaintenanceUtils 
single-file upload and HttpShardHandler onlyNrt detection
+type: fixed
+authors:
+  - name: Jan Høydahl
+links:
+- name: PR#4605
+  url: https://github.com/apache/solr/pull/4605
diff --git 
a/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java 
b/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
index 34f9a022d70..da284721080 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
@@ -496,7 +496,7 @@ public class HttpShardHandler extends ShardHandler {
 
     ReplicaSource replicaSource;
     if (zkController != null) {
-      boolean onlyNrt = Boolean.TRUE == 
req.getContext().get(ONLY_NRT_REPLICAS);
+      boolean onlyNrt = 
Boolean.TRUE.equals(req.getContext().get(ONLY_NRT_REPLICAS));
 
       replicaSource =
           new CloudReplicaSource.Builder()
diff --git a/solr/core/src/test/org/apache/solr/cloud/ZkShardTermsTest.java 
b/solr/core/src/test/org/apache/solr/cloud/ZkShardTermsTest.java
index 7aed2e27d3d..883af88f314 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ZkShardTermsTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ZkShardTermsTest.java
@@ -380,7 +380,7 @@ public class ZkShardTermsTest extends SolrCloudTestCase {
   private <T> void waitFor(T expected, Supplier<T> supplier) throws 
InterruptedException {
     TimeOut timeOut = new TimeOut(10, TimeUnit.SECONDS, new 
TimeSource.CurrentTimeSource());
     while (!timeOut.hasTimedOut()) {
-      if (expected == supplier.get()) return;
+      if (Objects.equals(expected, supplier.get())) return;
       Thread.sleep(100);
     }
     assertEquals(expected, supplier.get());
diff --git 
a/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
 
b/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
index 6438e84bbfc..4efb0827413 100644
--- 
a/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
+++ 
b/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
@@ -349,7 +349,7 @@ public class ZkMaintenanceUtils {
               if (file.getFileName().toString().equals(ZKNODE_DATA_FILE)
                   && zkClient.exists(zkNode)) {
                 zkClient.setData(zkNode, file);
-              } else if (file == rootPath) {
+              } else if (file.equals(rootPath)) {
                 // We are only uploading a single file, preVisitDirectory was 
never called
                 if (zkClient.exists(zkPath)) {
                   zkClient.setData(zkPath, file);
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/Utils.java 
b/solr/solrj/src/java/org/apache/solr/common/util/Utils.java
index b2c06d60fa4..6a11e0c35f7 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/Utils.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/Utils.java
@@ -899,6 +899,8 @@ public class Utils {
       Class<? extends Annotation> catchAllAnnotation,
       Function<Field, String> fieldNamer)
       throws IllegalAccessException {
+    // ClassLoader identity (not equals) determines whether it is safe to 
cache reflective metadata.
+    @SuppressWarnings("ReferenceEquality")
     boolean sameClassLoader = c.getClassLoader() == 
Utils.class.getClassLoader();
     // we should not cache the class references of objects loaded from 
packages because they will
     // not get garbage collected

Reply via email to