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