diff --git a/changelog/unreleased/PR#4847-update-error-prone-to-v2-50-0.yml b/changelog/unreleased/PR#4847-update-error-prone-to-v2-50-0.yml new file mode 100644 index 000000000000..0b5f3ad02de9 --- /dev/null +++ b/changelog/unreleased/PR#4847-update-error-prone-to-v2-50-0.yml @@ -0,0 +1,7 @@ +title: Update Error Prone to v2.50.0 +type: dependency_update +authors: +- name: solrbot +links: +- name: PR#4847 + url: https://github.com/apache/solr/pull/4847 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 27f3856e3ff8..6b942e22e5a7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -99,7 +99,7 @@ google-api-grpc-proto = "2.75.0" # @keep for version alignment google-autovalue = "1.11.1" google-cloud-bom = "0.268.0" -google-errorprone = "2.41.0" +google-errorprone = "2.50.0" # @keep for version alignment google-gson = "2.14.0" google-guava = "33.7.1-jre" diff --git a/gradle/validation/error-prone.gradle b/gradle/validation/error-prone.gradle index 3ca5341ef0f5..6d105ea8ba18 100644 --- a/gradle/validation/error-prone.gradle +++ b/gradle/validation/error-prone.gradle @@ -589,11 +589,12 @@ allprojects {prj -> } } -// Exclude generated OpenAPI sources in solrj from Error Prone checks. +// Exclude generated OpenAPI sources and the vendored noggit JSON parser (org.noggit, not our +// code/conventions) in solrj from Error Prone checks. configure(project(":solr:solrj")) { plugins.withId(libs.plugins.ltgt.errorprone.get().pluginId) { tasks.withType(JavaCompile) { - options.errorprone.excludedPaths = ".*/build/generated/.*" + options.errorprone.excludedPaths = ".*/build/generated/.*|.*/org/noggit/.*" } } } @@ -606,3 +607,13 @@ configure(project(":solr:core")) { } } } + +// Exclude vendored Tika sources (copied in to eliminate the Tika dependency) in +// solr:modules:extraction from Error Prone checks. +configure(project(":solr:modules:extraction")) { + plugins.withId(libs.plugins.ltgt.errorprone.get().pluginId) { + tasks.withType(JavaCompile) { + options.errorprone.excludedPaths = ".*/org/apache/solr/handler/extraction/fromtika/.*" + } + } +} diff --git a/solr/api/gradle.lockfile b/solr/api/gradle.lockfile index 12addaf6b82d..21e4ad6f572b 100644 --- a/solr/api/gradle.lockfile +++ b/solr/api/gradle.lockfile @@ -21,11 +21,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/benchmark/gradle.lockfile b/solr/benchmark/gradle.lockfile index 6efbf09d61f8..7d537ba705b9 100644 --- a/solr/benchmark/gradle.lockfile +++ b/solr/benchmark/gradle.lockfile @@ -17,11 +17,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/core/gradle.lockfile b/solr/core/gradle.lockfile index 1ba057e60109..ae79bf6cb4ca 100644 --- a/solr/core/gradle.lockfile +++ b/solr/core/gradle.lockfile @@ -20,11 +20,11 @@ com.github.stephenc.jcip:jcip-annotations:1.0-1=compileClasspath,jarValidation com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/core/src/java/org/apache/solr/cli/ExportTool.java b/solr/core/src/java/org/apache/solr/cli/ExportTool.java index 9fb9a23e3d2c..e377e37bc995 100644 --- a/solr/core/src/java/org/apache/solr/cli/ExportTool.java +++ b/solr/core/src/java/org/apache/solr/cli/ExportTool.java @@ -594,6 +594,8 @@ private void addProducers(Map m) { } } + @SuppressWarnings( + "ReferenceEquality") // EOFDOC is a unique sentinel; identity check is intentional private void addConsumer(CountDownLatch consumerlatch) { consumerThreadpool.execute( () -> { diff --git a/solr/core/src/java/org/apache/solr/cloud/DistributedClusterStateUpdater.java b/solr/core/src/java/org/apache/solr/cloud/DistributedClusterStateUpdater.java index 3c4c152bdcf0..9a8e249ca3c8 100644 --- a/solr/core/src/java/org/apache/solr/cloud/DistributedClusterStateUpdater.java +++ b/solr/core/src/java/org/apache/solr/cloud/DistributedClusterStateUpdater.java @@ -755,6 +755,8 @@ public boolean isCollectionCreation() { } @Override + @SuppressWarnings( + "ReferenceEquality") // NO_OP is a unique sentinel; identity check is intentional public void computeUpdates(ClusterState clusterState, SolrZkClient client) { boolean hasJsonUpdates = false; List perReplicaStateOps = new ArrayList<>(); @@ -912,6 +914,8 @@ public boolean isCollectionCreation() { } @Override + @SuppressWarnings( + "ReferenceEquality") // NO_OP is a unique sentinel; identity check is intentional public void computeUpdates(ClusterState clusterState, SolrZkClient client) { final DocCollection docCollection = clusterState.getCollectionOrNull(collectionName); Optional result = diff --git a/solr/core/src/java/org/apache/solr/cloud/LockTree.java b/solr/core/src/java/org/apache/solr/cloud/LockTree.java index 6bb432abd8e8..c99eae37e9cf 100644 --- a/solr/core/src/java/org/apache/solr/cloud/LockTree.java +++ b/solr/core/src/java/org/apache/solr/cloud/LockTree.java @@ -214,6 +214,8 @@ boolean isLocked() { return false; } + @SuppressWarnings( + "ReferenceEquality") // releasing only the exact lock instance held, by identity boolean unlock(LockImpl lockObject) { if (--refCount > 0) { return false; diff --git a/solr/core/src/java/org/apache/solr/cloud/Overseer.java b/solr/core/src/java/org/apache/solr/cloud/Overseer.java index cc8e65537c5f..9d35afb7161c 100644 --- a/solr/core/src/java/org/apache/solr/cloud/Overseer.java +++ b/solr/core/src/java/org/apache/solr/cloud/Overseer.java @@ -782,9 +782,6 @@ public synchronized void start(String id) { assert ObjectReleaseTracker.track(this); } - /** Start {@link ClusterSingleton} plugins when we become the leader. */ - - /** Stop {@link ClusterSingleton} plugins when we lose leadership. */ public Stats getStats() { return stats; } diff --git a/solr/core/src/java/org/apache/solr/cloud/ReplicateFromLeader.java b/solr/core/src/java/org/apache/solr/cloud/ReplicateFromLeader.java index a6998fe38cb5..7458f3938d06 100644 --- a/solr/core/src/java/org/apache/solr/cloud/ReplicateFromLeader.java +++ b/solr/core/src/java/org/apache/solr/cloud/ReplicateFromLeader.java @@ -64,6 +64,9 @@ public ReplicateFromLeader(CoreContainer cc, String coreName) { * @param switchTransactionLog if true, ReplicationHandler will rotate the transaction log once * the replication is done */ + @SuppressWarnings( + "ReferenceEquality") // IndexFetchResult constants are singletons; identity check is + // intentional public void startReplication(boolean switchTransactionLog) { try (SolrCore core = cc.getCore(coreName)) { if (core == null) { diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/CategoryRoutedAlias.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/CategoryRoutedAlias.java index c787fdc80ce1..b618d529f805 100644 --- a/solr/core/src/java/org/apache/solr/cloud/api/collections/CategoryRoutedAlias.java +++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/CategoryRoutedAlias.java @@ -80,6 +80,8 @@ public class CategoryRoutedAlias extends RoutedAlias { } @Override + @SuppressWarnings( + "ReferenceEquality") // Aliases is replaced wholesale, so identity means "possibly changed" public boolean updateParsedCollectionAliases(ZkStateReader zkStateReader, boolean contextualize) { final Aliases aliases = zkStateReader.getAliases(); // note: might be different from last request diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/DimensionalRoutedAlias.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/DimensionalRoutedAlias.java index 0b2cb49678c2..b752d098153c 100644 --- a/solr/core/src/java/org/apache/solr/cloud/api/collections/DimensionalRoutedAlias.java +++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/DimensionalRoutedAlias.java @@ -212,6 +212,8 @@ protected String getHeadCollectionIfOrdered(AddUpdateCommand cmd) { * @return A list of actions across the DRA. */ @Override + @SuppressWarnings( + "ReferenceEquality") // RoutedAlias dimension identity, not equality, is what matters here protected List calculateActions(String targetCol) { String[] routeValues = SEP_MATCHER.split(targetCol); // remove the alias name to avoid all manner of off by one errors... diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/TimeRoutedAlias.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/TimeRoutedAlias.java index 8139956116e6..4df16b611d20 100644 --- a/solr/core/src/java/org/apache/solr/cloud/api/collections/TimeRoutedAlias.java +++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/TimeRoutedAlias.java @@ -264,6 +264,8 @@ private static void checkMillis(Instant date) { } @Override + @SuppressWarnings( + "ReferenceEquality") // Aliases is replaced wholesale, so identity means "possibly changed" public boolean updateParsedCollectionAliases(ZkStateReader zkStateReader, boolean contextualize) { final Aliases aliases = zkStateReader.getAliases(); if (this.parsedCollectionsAliases != aliases) { diff --git a/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java b/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java index 8059a2b16b6d..1f12b9ad5f2f 100644 --- a/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java +++ b/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java @@ -129,6 +129,8 @@ public void updateClusterState(Function fun) { * a {@link org.apache.zookeeper.KeeperException.BadVersionException} this instance becomes * unusable and must be discarded */ + @SuppressWarnings( + "ReferenceEquality") // NO_OP is a unique sentinel; identity check is intentional public ClusterState enqueueUpdate( ClusterState prevState, List cmds, ZkWriteCallback callback) throws IllegalStateException, Exception { @@ -189,6 +191,8 @@ public ClusterState enqueueUpdate( return clusterState; } + @SuppressWarnings( + "ReferenceEquality") // NO_OP is a unique sentinel; identity check is intentional private boolean isNoOps(List cmds) { for (ZkWriteCommand cmd : cmds) { if (cmd != NO_OP) return false; @@ -229,6 +233,8 @@ public ClusterState writePendingUpdates() throws KeeperException, InterruptedExc * @throws KeeperException if any ZooKeeper operation results in an error * @throws InterruptedException if the current thread is interrupted */ + @SuppressWarnings( + "ReferenceEquality") // detecting "same map instance passed back in" means "flush all" public ClusterState writePendingUpdates( Map updates, boolean resetPendingUpdateCounters) throws IllegalStateException, KeeperException, InterruptedException { diff --git a/solr/core/src/java/org/apache/solr/cloud/overseer/ZkWriteCommand.java b/solr/core/src/java/org/apache/solr/cloud/overseer/ZkWriteCommand.java index f2d5466f760c..a671aa3f7495 100644 --- a/solr/core/src/java/org/apache/solr/cloud/overseer/ZkWriteCommand.java +++ b/solr/core/src/java/org/apache/solr/cloud/overseer/ZkWriteCommand.java @@ -49,6 +49,8 @@ public ZkWriteCommand(String name, DocCollection collection) { } @Override + @SuppressWarnings( + "ReferenceEquality") // NO_OP is a unique sentinel; identity check is intentional public String toString() { return getClass().getSimpleName() + ": " + (this == NO_OP ? "no-op" : name + "=" + collection); } diff --git a/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java index 8b943b7dc791..c19cca575579 100644 --- a/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java +++ b/solr/core/src/java/org/apache/solr/core/CachingDirectoryFactory.java @@ -223,6 +223,7 @@ private void removeFromCache(CacheValue v) { // be sure the method is called with the sync lock on this object // returns true if we closed the cacheValue, false if it will be closed later + @SuppressWarnings("ReferenceEquality") // CacheValue identity, not equality, is what matters here private boolean closeCacheValue(CacheValue cacheValue, Set deferRemove) { log.debug("looking to close {} {}", cacheValue.path, cacheValue.closeEntries); List listeners = closeListeners.remove(cacheValue.directory); @@ -300,6 +301,7 @@ private static Iterable sorted(Set vals) { return vals.stream().sorted((a, b) -> b.path.compareTo(a.path)).collect(Collectors.toList()); } + @SuppressWarnings("ReferenceEquality") // CacheValue identity, not equality, is what matters here private boolean maybeDeferClose(CacheValue maybeDefer) { assert maybeDefer.deleteOnClose; for (CacheValue maybeChildPath : byPathCache.values()) { @@ -381,6 +383,8 @@ public boolean exists(String path) throws IOException { * java.lang.String, boolean) */ @Override + @SuppressWarnings( + "ReferenceEquality") // same instance back from filterDirectory means "unfiltered" public final Directory get(String path, DirContext dirContext, String rawLockType) throws IOException { String fullPath = normalize(path); diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java index 91871cd0d314..3c6feef32d5f 100644 --- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java +++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java @@ -1445,6 +1445,7 @@ public CoreSorter getCoreSorter() { return coreSorter; } + @SuppressWarnings("ReferenceEquality") // SolrCore identity, not equality, is what matters here protected SolrCore registerCore( CoreDescriptor cd, SolrCore core, boolean registerInZk, boolean skipRecovery) { if (core == null) { diff --git a/solr/core/src/java/org/apache/solr/core/PluginBag.java b/solr/core/src/java/org/apache/solr/core/PluginBag.java index 30bb8435214f..27c33f3d3a5b 100644 --- a/solr/core/src/java/org/apache/solr/core/PluginBag.java +++ b/solr/core/src/java/org/apache/solr/core/PluginBag.java @@ -229,7 +229,10 @@ public T put(String name, T plugin) { return old == null ? null : old.get(); } - @SuppressWarnings({"unchecked"}) + @SuppressWarnings({ + "unchecked", + "ReferenceEquality" // detecting the same plugin instance re-registered vs. a real swap + }) public PluginHolder put(String name, PluginHolder plugin) { Boolean registerApi = null; // i.e. register for V2 Boolean disableV1 = null; // i.e. do *not* register for v1 diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java index 3ee0813f914e..86c67c4121c5 100644 --- a/solr/core/src/java/org/apache/solr/core/SolrCore.java +++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java @@ -2328,6 +2328,8 @@ public RefCounted getSearcher( * *

This method acquires openSearcherLock - do not call with searchLock held! */ + @SuppressWarnings( + "ReferenceEquality") // schema is only ever replaced wholesale, so identity is correct here public RefCounted openNewSearcher( boolean updateHandlerReopens, boolean realtime) { if (isClosed()) { // catch some errors quicker @@ -2544,6 +2546,8 @@ public RefCounted openNewSearcher( * SolrIndexSearcher}. */ // TODO waitSearcher should be an AtomicReference or something that is a more clear API + @SuppressWarnings( + "ReferenceEquality") // SolrIndexSearcher identity, not equality, is what matters here public RefCounted getSearcher( boolean forceNew, boolean returnSearcher, @@ -2830,6 +2834,8 @@ public boolean isReloaded() { // // onDeckSearchers will also be decremented (it should have been incremented // as a result of opening a new searcher). + @SuppressWarnings( + "ReferenceEquality") // detecting re-registration of the exact same searcher holder private void registerSearcher(RefCounted newSearcherHolder) { synchronized (searcherLock) { try { diff --git a/solr/core/src/java/org/apache/solr/core/SolrPaths.java b/solr/core/src/java/org/apache/solr/core/SolrPaths.java index dc2c245eada1..9a9262872b49 100644 --- a/solr/core/src/java/org/apache/solr/core/SolrPaths.java +++ b/solr/core/src/java/org/apache/solr/core/SolrPaths.java @@ -123,6 +123,8 @@ public AllowPathBuilder addPath(String path) { * Adds an allowed path. Detects "_ALL_" which means all paths are allowed. Does not detect "*" * (not supported as a {@link Path} on Windows), see {@link #addPath(String)}. */ + @SuppressWarnings( + "ReferenceEquality") // ALL_PATHS is a unique sentinel; identity check is intentional public AllowPathBuilder addPath(Path path) { if (path == null) { return this; diff --git a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java index 206c7995e49d..30d3503d7a9c 100644 --- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java +++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java @@ -216,6 +216,8 @@ public SolrResourceLoader(Path instanceDir, ClassLoader parent) { * * @param urls the URLs of files to add */ + @SuppressWarnings( + "ReferenceEquality") // ClassLoader has no value-equality; identity check is intentional synchronized void addToClassLoader(List urls) { URLClassLoader newLoader = addURLsToClassLoader(classLoader, urls); if (newLoader == classLoader) { @@ -483,6 +485,8 @@ public Class findClass(String cname, Class expectedType) { * @param subpackages the packages to be tried if the cname starts with solr. * @return the loaded class. An exception is thrown if it fails */ + @SuppressWarnings( + "ReferenceEquality") // detecting the default `packages` array vs. a caller-supplied one public Class findClass( String cname, Class expectedType, String... subpackages) { if (subpackages == null || subpackages.length == 0 || subpackages == packages) { @@ -694,6 +698,8 @@ public boolean addToCoreAware(T obj) { } } + @SuppressWarnings( + "ReferenceEquality") // detecting whether the same SolrConfig instance is being re-associated protected final void setSolrConfig(SolrConfig config) { if (this.config != null && this.config != config) { throw new IllegalStateException("SolrConfig instance is already associated with this loader"); @@ -701,6 +707,9 @@ protected final void setSolrConfig(SolrConfig config) { this.config = config; } + @SuppressWarnings( + "ReferenceEquality") // detecting whether the same CoreContainer instance is being + // re-associated protected final void setCoreContainer(CoreContainer coreContainer) { if (this.coreContainer != null && this.coreContainer != coreContainer) { throw new IllegalStateException( diff --git a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java index 7e429de374ea..69df5331d44e 100644 --- a/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java @@ -480,6 +480,8 @@ static Long getCheckSum(Checksum checksum, Path f) { private volatile IndexFetcher currentIndexFetcher; + @SuppressWarnings( + "ReferenceEquality") // detecting the shared pollingIndexFetcher vs. a one-off, by identity public IndexFetchResult doFetch(SolrParams solrParams, boolean forceReplication) { String leaderUrl = solrParams.get(LEADER_URL, null); if (!indexFetchLock.tryLock()) return IndexFetchResult.LOCK_OBTAIN_FAILED; @@ -1446,6 +1448,8 @@ public void preClose(SolrCore core) { } @Override + @SuppressWarnings( + "ReferenceEquality") // detecting the shared pollingIndexFetcher vs. a one-off public void postClose(SolrCore core) { if (pollingIndexFetcher != null) { pollingIndexFetcher.destroy(); @@ -1493,7 +1497,7 @@ public void shutdown() { */ private SolrEventListener getEventListener(final boolean snapshoot, final boolean getCommit) { return new SolrEventListener() { - /** + /* * This refreshes the latest replicateable index commit and optionally can create Snapshots as * well */ diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java index 494e3f898414..e1d02565b9b0 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java @@ -464,6 +464,8 @@ public void submitAsyncTask(TaskObject taskObject) throws SolrException { } } + @SuppressWarnings( + "ReferenceEquality") // detecting a cache-computed instance vs. our own taskObject private void addTask(TaskObject taskObject) { // Ensure task ID is not already in use TaskObject taskInCache = diff --git a/solr/core/src/java/org/apache/solr/handler/admin/IndexSizeEstimator.java b/solr/core/src/java/org/apache/solr/handler/admin/IndexSizeEstimator.java index 38eb8a464cfd..96cc9be3a3b3 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/IndexSizeEstimator.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/IndexSizeEstimator.java @@ -585,6 +585,8 @@ private void estimateTermStats( } } + @SuppressWarnings( + "ReferenceEquality") // detecting whether getMergeInstance() returned a new closeable clone private void estimateStoredFields(Map result) throws IOException { log.info("- estimating stored fields..."); Map> stats = new HashMap<>(); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandler.java index 0e886bf1b226..353e096d2948 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/SecurityConfHandler.java @@ -315,6 +315,8 @@ public Collection getApis() { apis.add( new ReqHandlerToApi(this, authcSpecProvider) { @Override + @SuppressWarnings( + "ReferenceEquality") // detecting whether the plugin instance was reloaded public synchronized Map getCommandSchema() { // it is possible that the Authentication plugin is modified since the last call. // invalidate the cached commandSchema @@ -335,6 +337,8 @@ public synchronized Map getCommandSchema() { apis.add( new ApiBag.ReqHandlerToApi(this, authzSpecProvider) { @Override + @SuppressWarnings( + "ReferenceEquality") // detecting whether the plugin instance was reloaded public synchronized Map getCommandSchema() { // it is possible that the Authorization plugin is modified since the last call. // invalidate cached commandSchema diff --git a/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoProvider.java b/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoProvider.java index f9b398641564..f9accfe106b0 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoProvider.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoProvider.java @@ -286,6 +286,8 @@ public NodeSystemResponse.JVM getJvmInfo() { } /** Get Security Info */ + // Identity against the internal singleton is intentionally stricter than equals(). + @SuppressWarnings("ReferenceEquality") public NodeSystemResponse.Security getSecurityInfo() { NodeSystemResponse.Security info = new NodeSystemResponse.Security(); diff --git a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java index d251a7bfe4d2..d221132c835c 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java +++ b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java @@ -643,6 +643,8 @@ private static void removeCopyFieldTargets(SolrDocument solrDoc, IndexSchema sch * * @see #getInputDocumentFromTlog(SolrCore, BytesRef, AtomicLong, Set, Resolution) */ + @SuppressWarnings( + "ReferenceEquality") // DELETED is a unique sentinel; identity check is intentional private static SolrInputDocument getInputDocumentFromTlog( SolrCore core, BytesRef idBytes, @@ -755,6 +757,8 @@ public static SolrInputDocument getInputDocumentFromTlog( * @param resolveStrategy {@link Resolution#DOC} or {@link Resolution#ROOT_WITH_CHILDREN}. * @see Resolution */ + @SuppressWarnings( + "ReferenceEquality") // DELETED is a unique sentinel; identity check is intentional public static SolrInputDocument getInputDocument( SolrCore core, BytesRef idBytes, diff --git a/solr/core/src/java/org/apache/solr/handler/component/ResponseBuilder.java b/solr/core/src/java/org/apache/solr/handler/component/ResponseBuilder.java index aa85f9a69b44..e22356f55239 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/ResponseBuilder.java +++ b/solr/core/src/java/org/apache/solr/handler/component/ResponseBuilder.java @@ -191,6 +191,8 @@ public int getShardNum(String shard) { return -1; } + @SuppressWarnings( + "ReferenceEquality") // excluding "me" itself, by identity, from the other components public void addRequest(SearchComponent me, ShardRequest sreq) { outgoing.add(sreq); if ((sreq.purpose & ShardRequest.PURPOSE_PRIVATE) == 0) { diff --git a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java index 3e7a066841f3..76f62bd7ca9a 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java +++ b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java @@ -513,6 +513,9 @@ protected void processComponentsLocal( } /** Distributed request processing (AKA coordinator). */ + @SuppressWarnings( + "ReferenceEquality") // ShardRequest.ALL_SHARDS is a unique sentinel; identity check is + // intentional protected void processComponentsDistrib( SolrQueryRequest req, SolrQueryResponse rsp, diff --git a/solr/core/src/java/org/apache/solr/handler/component/StatsField.java b/solr/core/src/java/org/apache/solr/handler/component/StatsField.java index 2d01cb4baee4..89e2e27d4305 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/StatsField.java +++ b/solr/core/src/java/org/apache/solr/handler/component/StatsField.java @@ -84,7 +84,7 @@ public enum Stat { distinctValues(true), countDistinct(false, distinctValues), percentiles(true) { - /** special for percentiles * */ + /* special for percentiles */ @Override boolean parseParams(StatsField sf) { String percentileParas = sf.localParams.get(this.name()); @@ -116,7 +116,7 @@ boolean parseParams(StatsField sf) { } }, cardinality(true) { - /** special for percentiles * */ + /* special for percentiles */ @Override boolean parseParams(StatsField sf) { try { diff --git a/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java b/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java index 36f22d69cdce..3f8694a37ab5 100644 --- a/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java +++ b/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java @@ -642,6 +642,8 @@ private static void fetchTerms( } } + @SuppressWarnings( + "ReferenceEquality") // TermsEnum.EMPTY is a Lucene sentinel; identity check is intentional private static void collectTermStates( IndexReaderContext topReaderContext, TermStates[] contextArray, Term[] queryTerms) throws IOException { diff --git a/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java b/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java index 0c8b47003aec..23ad278d4918 100644 --- a/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java +++ b/solr/core/src/java/org/apache/solr/handler/loader/JavabinLoader.java @@ -141,6 +141,8 @@ public void update( } } + @SuppressWarnings( + "ReferenceEquality") // END_OBJ is a unique sentinel; identity check is intentional private void handleMultiStream( SolrQueryRequest req, SolrQueryResponse rsp, diff --git a/solr/core/src/java/org/apache/solr/handler/tagger/TagLL.java b/solr/core/src/java/org/apache/solr/handler/tagger/TagLL.java index a8f3682b479d..1431c929f4a9 100644 --- a/solr/core/src/java/org/apache/solr/handler/tagger/TagLL.java +++ b/solr/core/src/java/org/apache/solr/handler/tagger/TagLL.java @@ -95,6 +95,8 @@ boolean advance(BytesRef word, int offset) throws IOException { * Removes this tag from the chain, connecting prevTag and nextTag. Does not modify "this" * object's pointers, so the caller can refer to nextTag after removing it. */ + @SuppressWarnings( + "ReferenceEquality") // linked-list node identity, not equality, is what matters here public void removeLL() { if (head[0] == this) head[0] = nextTag; if (prevTag != null) { @@ -105,6 +107,8 @@ public void removeLL() { } } + @SuppressWarnings( + "ReferenceEquality") // linked-list node identity, not equality, is what matters here void addBeforeLL(TagLL tag) { assert tag.startOffset <= startOffset; if (prevTag != null) { diff --git a/solr/core/src/java/org/apache/solr/legacy/BBoxStrategy.java b/solr/core/src/java/org/apache/solr/legacy/BBoxStrategy.java index ccbb5b2f8fce..3de20dced77f 100644 --- a/solr/core/src/java/org/apache/solr/legacy/BBoxStrategy.java +++ b/solr/core/src/java/org/apache/solr/legacy/BBoxStrategy.java @@ -307,6 +307,9 @@ public DoubleValuesSource makeOverlapRatioValueSource( // } @Override + @SuppressWarnings( + "ReferenceEquality") // SpatialOperation constants are singletons; identity check is + // intentional public Query makeQuery(SpatialArgs args) { Shape shape = args.getShape(); if (!(shape instanceof Rectangle bbox)) diff --git a/solr/core/src/java/org/apache/solr/logging/jul/JulWatcher.java b/solr/core/src/java/org/apache/solr/logging/jul/JulWatcher.java index 9cb3acc0b0c0..f9779b304552 100644 --- a/solr/core/src/java/org/apache/solr/logging/jul/JulWatcher.java +++ b/solr/core/src/java/org/apache/solr/logging/jul/JulWatcher.java @@ -84,6 +84,9 @@ public void setLogLevel(String category, String level) { } @Override + @SuppressWarnings( + "ReferenceEquality") // java.util.logging.Logger has no equals() override; identity check is + // intentional public Collection getAllLoggers() { LogManager manager = LogManager.getLogManager(); diff --git a/solr/core/src/java/org/apache/solr/logging/log4j2/Log4j2Watcher.java b/solr/core/src/java/org/apache/solr/logging/log4j2/Log4j2Watcher.java index 51adcf2899b1..ec6597639893 100644 --- a/solr/core/src/java/org/apache/solr/logging/log4j2/Log4j2Watcher.java +++ b/solr/core/src/java/org/apache/solr/logging/log4j2/Log4j2Watcher.java @@ -167,6 +167,8 @@ protected LoggerConfig getLoggerConfig(LoggerContext ctx, String loggerName) { } @Override + @SuppressWarnings( + "ReferenceEquality") // fast-path identity check before the equals() fallback right after it public Collection getAllLoggers() { Logger root = LogManager.getRootLogger(); LoggerContext ctx = (LoggerContext) LogManager.getContext(false); diff --git a/solr/core/src/java/org/apache/solr/metrics/otel/instruments/DualRegistryAttributedLongCounter.java b/solr/core/src/java/org/apache/solr/metrics/otel/instruments/DualRegistryAttributedLongCounter.java index 15fc27b85c52..9dbd9f8d2ef3 100644 --- a/solr/core/src/java/org/apache/solr/metrics/otel/instruments/DualRegistryAttributedLongCounter.java +++ b/solr/core/src/java/org/apache/solr/metrics/otel/instruments/DualRegistryAttributedLongCounter.java @@ -27,6 +27,8 @@ public class DualRegistryAttributedLongCounter extends AttributedLongCounter { private final AttributedLongCounter nodeCounter; + @SuppressWarnings( + "ReferenceEquality") // sanity check that two distinct counter instances were passed in public DualRegistryAttributedLongCounter( LongCounter coreCounter, Attributes coreAttributes, diff --git a/solr/core/src/java/org/apache/solr/metrics/otel/instruments/DualRegistryAttributedLongTimer.java b/solr/core/src/java/org/apache/solr/metrics/otel/instruments/DualRegistryAttributedLongTimer.java index b42d869892c5..c1707fffdef4 100644 --- a/solr/core/src/java/org/apache/solr/metrics/otel/instruments/DualRegistryAttributedLongTimer.java +++ b/solr/core/src/java/org/apache/solr/metrics/otel/instruments/DualRegistryAttributedLongTimer.java @@ -27,6 +27,8 @@ public class DualRegistryAttributedLongTimer extends AttributedLongTimer { private final AttributedLongTimer nodeTimer; + @SuppressWarnings( + "ReferenceEquality") // sanity check that two distinct histogram instances were passed in public DualRegistryAttributedLongTimer( LongHistogram coreHistogram, Attributes coreAttributes, diff --git a/solr/core/src/java/org/apache/solr/metrics/otel/instruments/DualRegistryAttributedLongUpDownCounter.java b/solr/core/src/java/org/apache/solr/metrics/otel/instruments/DualRegistryAttributedLongUpDownCounter.java index 6cf505fb54e7..fc98805b1684 100644 --- a/solr/core/src/java/org/apache/solr/metrics/otel/instruments/DualRegistryAttributedLongUpDownCounter.java +++ b/solr/core/src/java/org/apache/solr/metrics/otel/instruments/DualRegistryAttributedLongUpDownCounter.java @@ -27,6 +27,8 @@ public class DualRegistryAttributedLongUpDownCounter extends AttributedLongUpDow private final AttributedLongUpDownCounter nodeUpDownCounter; + @SuppressWarnings( + "ReferenceEquality") // sanity check that two distinct counter instances were passed in public DualRegistryAttributedLongUpDownCounter( LongUpDownCounter coreUpDownCounter, Attributes coreAttributes, diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java index 7535bb2c7fe9..ff57f4775faa 100644 --- a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java +++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java @@ -60,6 +60,8 @@ public synchronized void addListener(Listener listener, boolean addFirst) { } } + @SuppressWarnings( + "ReferenceEquality") // removing the exact registered listener instance, not an equal one public synchronized void removeListener(Listener listener) { Iterator> it = listeners.iterator(); while (it.hasNext()) { diff --git a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java index 419cb033835f..887b7b84dc12 100644 --- a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java +++ b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java @@ -90,6 +90,8 @@ public static PluginBag.PluginHolder createHolder( } } + @SuppressWarnings( + "ReferenceEquality") // detecting the same package Version instance, not just an equal one private synchronized void reload(SolrPackageLoader.SolrPackage pkg, SolrCore core) { String lessThan = core.getSolrConfig().maxPackageVersion(info.pkgName); SolrPackageLoader.SolrPackage.Version newest = pkg.getLatest(lessThan); diff --git a/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java b/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java index 6809e99e9368..065255811cd3 100644 --- a/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java +++ b/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java @@ -109,6 +109,7 @@ public TextResponseWriter(Writer writer, SolrQueryRequest req, SolrQueryResponse * NOTE: strict object equality check against {@link #rawReturnFields}; see javadocs for {@link * #NO_RAW_FIELDS} */ + @SuppressWarnings("ReferenceEquality") // strict object identity is intentional, see javadoc above protected final boolean shouldWriteRaw(String fname, ReturnFields returnFields) { return rawReturnFields == returnFields && rawFields.contains(fname); } diff --git a/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java b/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java index b165b81e9237..2c6b540e6ceb 100644 --- a/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java +++ b/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java @@ -62,6 +62,8 @@ public boolean mayModifyValue() { } @Override + @SuppressWarnings( + "ReferenceEquality") // QueryResponseWriter identity, not equality, is what matters here public DocTransformer create( String display, SolrParams params, diff --git a/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java b/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java index e2fe53cf4d56..43c707980f00 100644 --- a/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java +++ b/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java @@ -143,6 +143,8 @@ public float score() throws IOException { IntObjectHashMap cachedValuesById; @Override + @SuppressWarnings( + "ReferenceEquality") // NULL_SENTINEL is a unique sentinel; identity check is intentional public void transform(SolrDocument doc, int docid, DocIterationInfo docIterationInfo) { Object cacheValue = (cachedValuesById != null) ? cachedValuesById.get(docid) : null; if (cacheValue != null) { diff --git a/solr/core/src/java/org/apache/solr/schema/BBoxField.java b/solr/core/src/java/org/apache/solr/schema/BBoxField.java index 4b85573ad73d..fbf0e051d031 100644 --- a/solr/core/src/java/org/apache/solr/schema/BBoxField.java +++ b/solr/core/src/java/org/apache/solr/schema/BBoxField.java @@ -75,6 +75,7 @@ protected void init(IndexSchema schema, Map args) { } @Override + @SuppressWarnings("ReferenceEquality") // FieldType identity, not equality, is what matters here public void inform(IndexSchema schema) { this.schema = schema; FieldType numberType = schema.getFieldTypeByName(numberTypeName); diff --git a/solr/core/src/java/org/apache/solr/schema/CurrencyFieldType.java b/solr/core/src/java/org/apache/solr/schema/CurrencyFieldType.java index 375d3804db1d..bce3ecf06380 100644 --- a/solr/core/src/java/org/apache/solr/schema/CurrencyFieldType.java +++ b/solr/core/src/java/org/apache/solr/schema/CurrencyFieldType.java @@ -609,7 +609,7 @@ private String getDocCurrencyCode(int doc, int currencyOrd) throws IOException { } } - /** throws a (Server Error) SolrException if the code is not valid */ + /* throws a (Server Error) SolrException if the code is not valid */ private Currency getDocCurrency(int doc, int currencyOrd) throws IOException { String code = getDocCurrencyCode(doc, currencyOrd); Currency c = getCurrency(code); diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java index 3980483fb7ef..066c35c38114 100644 --- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java +++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java @@ -2002,6 +2002,7 @@ public IndexSchema deleteCopyFields(Map> copyFields) } /** Informs analyzers used by a fieldType. */ + @SuppressWarnings("ReferenceEquality") // ref comparison is correct here (vs. equals) private void informResourceLoaderAwareObjectsForFieldType(FieldType fieldType) { // must inform any sub-components used in the // tokenizer chain if they are ResourceLoaderAware diff --git a/solr/core/src/java/org/apache/solr/schema/LatLonPointSpatialField.java b/solr/core/src/java/org/apache/solr/schema/LatLonPointSpatialField.java index 238666d71650..0a2d4fd38c85 100644 --- a/solr/core/src/java/org/apache/solr/schema/LatLonPointSpatialField.java +++ b/solr/core/src/java/org/apache/solr/schema/LatLonPointSpatialField.java @@ -157,6 +157,9 @@ public Field[] createIndexableFields(Shape shape) { } @Override + @SuppressWarnings( + "ReferenceEquality") // SpatialOperation constants are singletons; identity check is + // intentional public Query makeQuery(SpatialArgs args) { if (args.getOperation() != SpatialOperation.Intersects) { throw new UnsupportedSpatialOperation(args.getOperation()); diff --git a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java index a65eb18df6aa..bcafcab8c974 100644 --- a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java +++ b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java @@ -493,6 +493,8 @@ private OpType(String label) { } } + @SuppressWarnings( + "ReferenceEquality") // detecting a self-referencing exception cause loop, by identity public static String getErrorStr(Exception e) { StringBuilder sb = new StringBuilder(); Throwable cause = e; diff --git a/solr/core/src/java/org/apache/solr/search/CaffeineCache.java b/solr/core/src/java/org/apache/solr/search/CaffeineCache.java index e43acb704cc1..60ccc26c7aaa 100644 --- a/solr/core/src/java/org/apache/solr/search/CaffeineCache.java +++ b/solr/core/src/java/org/apache/solr/search/CaffeineCache.java @@ -271,6 +271,7 @@ public V computeIfAbsent(K key, IOFunction mappingFuncti } @Override + @SuppressWarnings("ReferenceEquality") // intentional, see the comment below re: Caffeine behavior public V put(K key, V val) { inserts.increment(); V old = cache.asMap().put(key, val); diff --git a/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java index 044b9894d979..de683b204d56 100644 --- a/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java +++ b/solr/core/src/java/org/apache/solr/search/CollapsingQParserPlugin.java @@ -2997,7 +2997,11 @@ private static class SortFieldsCompare { * Constructs an instance based on the (raw, un-rewritten) SortFields to be used, and an initial * number of expected groups (will grow as needed). */ - @SuppressWarnings({"rawtypes"}) + @SuppressWarnings({ + "rawtypes", + "ReferenceEquality" // SortField.STRING_LAST is a Lucene sentinel; identity check is + // intentional + }) public SortFieldsCompare(SortField[] sorts, int initNumGroups) { this.sorts = sorts; numClauses = sorts.length; @@ -3140,7 +3144,11 @@ public boolean testAndSetNullGroupValues(int contextDoc) throws IOException { * overwrites them (and returns true) if this document is the new group head in accordance with * the SortFields. (otherwise returns false) */ - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings({ + "unchecked", + "rawtypes", + "ReferenceEquality" // detecting whether the same DocValues instance is still in use + }) private boolean testAndSetGroupValues(Object[] values, int contextDoc) throws IOException { Object[] stash = new Object[numClauses]; int lastCompare = 0; diff --git a/solr/core/src/java/org/apache/solr/search/DocSlice.java b/solr/core/src/java/org/apache/solr/search/DocSlice.java index f0c63a1b2695..3773d4d2f957 100644 --- a/solr/core/src/java/org/apache/solr/search/DocSlice.java +++ b/solr/core/src/java/org/apache/solr/search/DocSlice.java @@ -134,7 +134,7 @@ public Integer next() { return nextDoc(); } - /** The remove operation is not supported by this Iterator. */ + /* The remove operation is not supported by this Iterator. */ @Override public void remove() { throw new UnsupportedOperationException( diff --git a/solr/core/src/java/org/apache/solr/search/DocValuesIteratorCache.java b/solr/core/src/java/org/apache/solr/search/DocValuesIteratorCache.java index eba8a7318814..431675437447 100644 --- a/solr/core/src/java/org/apache/solr/search/DocValuesIteratorCache.java +++ b/solr/core/src/java/org/apache/solr/search/DocValuesIteratorCache.java @@ -94,6 +94,7 @@ public DocValuesIteratorCache(SolrIndexSearcher searcher, boolean cache) { } } + @SuppressWarnings("ReferenceEquality") // NONE is a unique sentinel; identity check is intentional public FieldDocValuesSupplier getSupplier(String fieldName) { FieldDocValuesSupplier ret = getSupplier.apply(fieldName); return ret == NONE ? null : ret; diff --git a/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java b/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java index 4dd2745bf1eb..809c0305be39 100644 --- a/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java +++ b/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java @@ -1488,6 +1488,7 @@ private Query getQuery() { } } + @SuppressWarnings("ReferenceEquality") // Analyzer identity, not equality, is what matters here private Analyzer noStopwordFilterAnalyzer(String fieldName) { FieldType ft = parser.getReq().getSchema().getFieldType(fieldName); Analyzer qa = ft.getQueryAnalyzer(); diff --git a/solr/core/src/java/org/apache/solr/search/GraphTermsQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/GraphTermsQParserPlugin.java index f7bfd3b7dc23..d898bdcce039 100644 --- a/solr/core/src/java/org/apache/solr/search/GraphTermsQParserPlugin.java +++ b/solr/core/src/java/org/apache/solr/search/GraphTermsQParserPlugin.java @@ -211,6 +211,9 @@ public int hashCode() { } @Override + @SuppressWarnings( + "ReferenceEquality") // id is a unique marker Object created per non-clone construction, so + // identity is the intended equality check (clones share it, independent instances don't) public boolean equals(Object other) { return sameClassAs(other) && id == ((GraphTermsQuery) other).id; } @@ -290,6 +293,8 @@ public boolean isCacheable(LeafReaderContext ctx) { }; } + @SuppressWarnings( + "ReferenceEquality") // TermsEnum.EMPTY is a Lucene sentinel; identity check is intentional private void collectTermStates( IndexReader reader, List leaves, diff --git a/solr/core/src/java/org/apache/solr/search/IntervalsQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/IntervalsQParserPlugin.java index 02d696d87b31..ba794d570e14 100644 --- a/solr/core/src/java/org/apache/solr/search/IntervalsQParserPlugin.java +++ b/solr/core/src/java/org/apache/solr/search/IntervalsQParserPlugin.java @@ -455,7 +455,7 @@ private IntervalsSource applyFilter( }; } - /** + /* * Resolves the field referenced by an optional {@code use_field} rule parameter, falling back * to the query's default field when absent. Throws BAD_REQUEST if {@code useField} names a * field that doesn't exist in the schema. @@ -473,9 +473,9 @@ private Analyzer resolveAnalyzer( return resolveFieldType(analyzerName, ruleName).getQueryAnalyzer(); } - /** - * Resolves the analyzer to use for normalizing prefix/wildcard/fuzzy term text. Unlike {@link - * #resolveAnalyzer}, this uses the field type's multi-term analyzer rather than its regular + /* + * Resolves the analyzer to use for normalizing prefix/wildcard/fuzzy term text. Unlike + * resolveAnalyzer, this uses the field type's multi-term analyzer rather than its regular * query analyzer, since the term text here is a single already-tokenized value, not free text * to be tokenized. */ diff --git a/solr/core/src/java/org/apache/solr/search/JoinQuery.java b/solr/core/src/java/org/apache/solr/search/JoinQuery.java index 09fb728e7f96..fd1d0e7bdfd3 100644 --- a/solr/core/src/java/org/apache/solr/search/JoinQuery.java +++ b/solr/core/src/java/org/apache/solr/search/JoinQuery.java @@ -105,6 +105,7 @@ protected class JoinQueryWeight extends ConstantScoreWeight { ResponseBuilder rb; ScoreMode scoreMode; + @SuppressWarnings("ReferenceEquality") // SolrCore identity, not equality, is what matters here public JoinQueryWeight(SolrIndexSearcher searcher, ScoreMode scoreMode, float boost) { super(JoinQuery.this, boost); this.scoreMode = scoreMode; @@ -248,6 +249,8 @@ public DocSet getDocSet() throws IOException { return result; } + @SuppressWarnings( + "ReferenceEquality") // SolrIndexSearcher identity, not equality, is what matters here public DocSet getDocSetEnumerate() throws IOException { FixedBitSet resultBits = null; diff --git a/solr/core/src/java/org/apache/solr/search/QueryResultKey.java b/solr/core/src/java/org/apache/solr/search/QueryResultKey.java index 671da8cda54e..e76fb6e57165 100644 --- a/solr/core/src/java/org/apache/solr/search/QueryResultKey.java +++ b/solr/core/src/java/org/apache/solr/search/QueryResultKey.java @@ -144,6 +144,7 @@ public boolean equals(Object o) { * * @return true if the lists of equivalent other then the ordering */ + @SuppressWarnings("ReferenceEquality") // fast path: takes care of identity and null cases private static boolean unorderedCompare(List fqList1, List fqList2) { // Do fast version first, expecting that filters are usually in the same order // diff --git a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java index e7786f71d3b0..0a5c9c7d2ad2 100644 --- a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java +++ b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java @@ -965,6 +965,8 @@ private BitDocSet makeBitDocSet(DocSet answer) { return new BitDocSet(bs, answer.size()); } + @SuppressWarnings( + "ReferenceEquality") // detecting whether makeBitDocSet had to allocate a new instance public BitDocSet getDocSetBits(Query q) throws IOException { DocSet answer = getDocSet(q); BitDocSet answerBits = makeBitDocSet(answer); diff --git a/solr/core/src/java/org/apache/solr/search/SortedIntDocSet.java b/solr/core/src/java/org/apache/solr/search/SortedIntDocSet.java index 1880d290befa..7bcbf13ae668 100644 --- a/solr/core/src/java/org/apache/solr/search/SortedIntDocSet.java +++ b/solr/core/src/java/org/apache/solr/search/SortedIntDocSet.java @@ -593,7 +593,7 @@ public Integer next() { return nextDoc(); } - /** The remove operation is not supported by this Iterator. */ + /* The remove operation is not supported by this Iterator. */ @Override public void remove() { throw new UnsupportedOperationException( diff --git a/solr/core/src/java/org/apache/solr/search/TopDocsSlice.java b/solr/core/src/java/org/apache/solr/search/TopDocsSlice.java index daf37a20cf57..97be34fbe1c2 100644 --- a/solr/core/src/java/org/apache/solr/search/TopDocsSlice.java +++ b/solr/core/src/java/org/apache/solr/search/TopDocsSlice.java @@ -102,7 +102,7 @@ public Integer next() { return nextDoc(); } - /** The remove operation is not supported by this Iterator. */ + /* The remove operation is not supported by this Iterator. */ @Override public void remove() { throw new UnsupportedOperationException( diff --git a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessor.java b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessor.java index 2dca4a5a35bf..13b93c66eab7 100644 --- a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessor.java +++ b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessor.java @@ -320,6 +320,7 @@ private static long applyDefaultOverrequest(long offset, long limit) { /** * Processes the collected data to finds the top slots, and composes it in the response NamedList. */ + @SuppressWarnings("ReferenceEquality") // SlotAcc identity, not equality, is what matters here SimpleOrderedMap findTopSlots( final int numSlots, final int slotCardinality, @@ -578,6 +579,7 @@ private static class Slot { } /** Helper method used solely when looping over buckets to be returned in findTopSlots */ + @SuppressWarnings("ReferenceEquality") // SlotAcc identity, not equality, is what matters here private void fillBucketFromSlot(SimpleOrderedMap target, Slot slot, SlotAcc resortAcc) throws IOException { final int slotOrd = slot.slot; @@ -846,6 +848,7 @@ public void setValues(SimpleOrderedMap bucket, int slotNum) throws IOExc } @Override + @SuppressWarnings("ReferenceEquality") // SlotAcc identity, not equality, is what matters here public SlotAcc registerSweepingAccs(SweepingCountSlotAcc baseSweepingAcc) { final FacetFieldProcessor p = (FacetFieldProcessor) fcontext.processor; int j = 0; diff --git a/solr/core/src/java/org/apache/solr/search/facet/RelatednessAgg.java b/solr/core/src/java/org/apache/solr/search/facet/RelatednessAgg.java index f55690bbd556..d35f5f46dec5 100644 --- a/solr/core/src/java/org/apache/solr/search/facet/RelatednessAgg.java +++ b/solr/core/src/java/org/apache/solr/search/facet/RelatednessAgg.java @@ -138,6 +138,8 @@ public FunctionValues getValues(Map context, LeafReaderContext r } @Override + @SuppressWarnings( + "ReferenceEquality") // FacetContext identity, not equality, is what matters here public SlotAcc createSlotAcc(FacetContext fcontext, long numDocs, int numSlots) throws IOException { // TODO: Ideally this is where we should check fgQ/bgQ for 'null' and apply defaults... diff --git a/solr/core/src/java/org/apache/solr/search/facet/SlotAcc.java b/solr/core/src/java/org/apache/solr/search/facet/SlotAcc.java index ceba52b6fcba..904a489aab2f 100644 --- a/solr/core/src/java/org/apache/solr/search/facet/SlotAcc.java +++ b/solr/core/src/java/org/apache/solr/search/facet/SlotAcc.java @@ -226,6 +226,8 @@ public FixedBitSet resize(FixedBitSet old) { return values; } + @SuppressWarnings( + "ReferenceEquality") // fast-path: values array is prefilled with defaultValue already public T[] resize(T[] old, T defaultValue) { @SuppressWarnings({"unchecked"}) T[] values = (T[]) Array.newInstance(old.getClass().getComponentType(), getNewSize()); @@ -757,6 +759,7 @@ public ReadOnlyCountSlotAcc add(String key, DocSet docs, int numSlots) { * @param toAcc - the replacement {@link SlotAcc} * @see SweepableSlotAcc#registerSweepingAccs(SweepingCountSlotAcc) */ + @SuppressWarnings("ReferenceEquality") // SlotAcc identity, not equality, is what matters here public void registerMapping(SlotAcc fromAcc, SlotAcc toAcc) { assert fromAcc.key.equals(toAcc.key); output.add(toAcc); diff --git a/solr/core/src/java/org/apache/solr/search/facet/UnInvertedField.java b/solr/core/src/java/org/apache/solr/search/facet/UnInvertedField.java index 5ddd47051161..4da65e04bc83 100644 --- a/solr/core/src/java/org/apache/solr/search/facet/UnInvertedField.java +++ b/solr/core/src/java/org/apache/solr/search/facet/UnInvertedField.java @@ -633,6 +633,8 @@ public static UnInvertedField getUnInvertedField(String field, SolrIndexSearcher } // Returns null if not already populated + @SuppressWarnings( + "ReferenceEquality") // uifPlaceholder is a unique sentinel; identity check is intentional public static UnInvertedField checkUnInvertedField(String field, SolrIndexSearcher searcher) throws IOException { SolrCache cache = searcher.getFieldValueCache(); diff --git a/solr/core/src/java/org/apache/solr/search/function/DualDoubleFunction.java b/solr/core/src/java/org/apache/solr/search/function/DualDoubleFunction.java index 1d2371dbd33a..94d87d97891e 100644 --- a/solr/core/src/java/org/apache/solr/search/function/DualDoubleFunction.java +++ b/solr/core/src/java/org/apache/solr/search/function/DualDoubleFunction.java @@ -64,9 +64,8 @@ public double doubleVal(int doc) throws IOException { return func(doc, aVals, bVals); } - /** - * True if and only if all of the wrapped {@link FunctionValues} exists - * for the specified doc + /* + * True if and only if all of the wrapped FunctionValues exists for the specified doc */ @Override public boolean exists(int doc) throws IOException { diff --git a/solr/core/src/java/org/apache/solr/security/AllowListUrlChecker.java b/solr/core/src/java/org/apache/solr/security/AllowListUrlChecker.java index 039ce146f4d8..5c85c4ee7764 100644 --- a/solr/core/src/java/org/apache/solr/security/AllowListUrlChecker.java +++ b/solr/core/src/java/org/apache/solr/security/AllowListUrlChecker.java @@ -160,6 +160,8 @@ public void checkAllowList(List urls, ClusterState clusterState) * Gets the set of live hosts urls (host:port) built from the set of live nodes. The set is cached * to be reused until the live nodes change. */ + @SuppressWarnings( + "ReferenceEquality") // live-nodes set is replaced wholesale, so identity means "unchanged" private Set getLiveHostUrls(ClusterState clusterState) { if (clusterState == null) { return Set.of(); diff --git a/solr/core/src/java/org/apache/solr/security/PKIAuthenticationPlugin.java b/solr/core/src/java/org/apache/solr/security/PKIAuthenticationPlugin.java index b069218ee483..6f378c183561 100644 --- a/solr/core/src/java/org/apache/solr/security/PKIAuthenticationPlugin.java +++ b/solr/core/src/java/org/apache/solr/security/PKIAuthenticationPlugin.java @@ -366,6 +366,8 @@ private Optional getUserFromJettyRequest(Request request) { listenerFactory.setDelegate(() -> listener); } + // Identity against the internal singleton is intentionally stricter than equals(). + @SuppressWarnings("ReferenceEquality") public boolean needsAuthorization(HttpServletRequest req) { return req.getUserPrincipal() != CLUSTER_MEMBER_NODE; } diff --git a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java index 3d80367921f4..3f6e6f5a6b2a 100644 --- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java +++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java @@ -429,6 +429,8 @@ protected void extractRemotePath(String collectionName) } /** This method processes the request. */ + @SuppressWarnings( + "ReferenceEquality") // detecting whether we're still at the outermost exception, by identity public Action call() throws IOException { if (cores == null) { diff --git a/solr/core/src/java/org/apache/solr/servlet/RequestRateLimiter.java b/solr/core/src/java/org/apache/solr/servlet/RequestRateLimiter.java index 0901a0e28738..bc4bba0ec187 100644 --- a/solr/core/src/java/org/apache/solr/servlet/RequestRateLimiter.java +++ b/solr/core/src/java/org/apache/solr/servlet/RequestRateLimiter.java @@ -90,6 +90,8 @@ boolean isEmpty() { * Handles an incoming request. returns a metadata object representing the metadata for the * acquired slot, if acquired. If a slot is not acquired, returns a null metadata object. */ + @SuppressWarnings( + "ReferenceEquality") // detecting whether the pools are the same shared Semaphore instance public SlotReservation handleRequest() throws InterruptedException { if (!rateLimiterConfig.isEnabled) { @@ -135,6 +137,8 @@ public SlotReservation handleRequest() throws InterruptedException { * @lucene.experimental -- Can cause slots to be blocked if a request borrows a slot and is itself * long lived. */ + @SuppressWarnings( + "ReferenceEquality") // detecting whether the pools are the same shared Semaphore instance public SlotReservation allowSlotBorrowing() throws InterruptedException { if (borrowableSlotsPool == null) { return null; diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java index 42531d5fd4a1..eb1a80773a72 100644 --- a/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java +++ b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java @@ -270,7 +270,11 @@ public int read() { * @param charset to be used to decode resulting bytes after %-decoding * @param map place all parameters in this map */ - @SuppressWarnings({"fallthrough", "resource"}) + @SuppressWarnings({ + "fallthrough", + "resource", + "ReferenceEquality" // currentStream points at keyStream or valueStream; identity is the flag + }) static long parseFormDataContent( final InputStream postContent, final long maxLen, diff --git a/solr/core/src/java/org/apache/solr/spelling/ConjunctionSolrSpellChecker.java b/solr/core/src/java/org/apache/solr/spelling/ConjunctionSolrSpellChecker.java index e031ade99381..dc67b47cb17d 100644 --- a/solr/core/src/java/org/apache/solr/spelling/ConjunctionSolrSpellChecker.java +++ b/solr/core/src/java/org/apache/solr/spelling/ConjunctionSolrSpellChecker.java @@ -45,6 +45,7 @@ public class ConjunctionSolrSpellChecker extends SolrSpellChecker { private List checkers = new ArrayList<>(); private boolean initialized = false; + @SuppressWarnings("ReferenceEquality") // Analyzer identity, not equality, is what matters here public void addChecker(SolrSpellChecker checker) { if (initialized) { throw new IllegalStateException("Need to add checkers before calling init()"); diff --git a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java index 76183c7f5a5b..76276228a86b 100644 --- a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java +++ b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java @@ -176,6 +176,7 @@ public DirectUpdateHandler2(SolrCore core) { } } + @SuppressWarnings("ReferenceEquality") // UpdateLog identity, not equality, is what matters here public DirectUpdateHandler2(SolrCore core, UpdateHandler updateHandler) { super(core, updateHandler.getUpdateLog(), false); solrCoreState = core.getSolrCoreState(); diff --git a/solr/core/src/java/org/apache/solr/update/MemOutputStream.java b/solr/core/src/java/org/apache/solr/update/MemOutputStream.java index 345d35bb193c..6619a740d8d5 100644 --- a/solr/core/src/java/org/apache/solr/update/MemOutputStream.java +++ b/solr/core/src/java/org/apache/solr/update/MemOutputStream.java @@ -32,6 +32,9 @@ public MemOutputStream(byte[] tempBuffer) { } @Override + @SuppressWarnings( + "ReferenceEquality") // arrays don't override equals(), so identity is the only real + // comparison public void flush(byte[] arr, int offset, int len) throws IOException { if (arr == buf && offset == 0 && len == buf.length) { buffers.add(buf); // steal the buffer diff --git a/solr/core/src/java/org/apache/solr/update/PeerSync.java b/solr/core/src/java/org/apache/solr/update/PeerSync.java index 7d69b4de9c61..2552b898789e 100644 --- a/solr/core/src/java/org/apache/solr/update/PeerSync.java +++ b/solr/core/src/java/org/apache/solr/update/PeerSync.java @@ -455,6 +455,9 @@ private boolean connectTimeoutExceptionInChain(Throwable exception) { } } + @SuppressWarnings( + "ReferenceEquality") // MissedUpdatesRequest constants are singletons; identity check is + // intentional private boolean handleVersions(ShardResponse srsp) { // we retrieved the last N updates from the replica @SuppressWarnings({"unchecked"}) @@ -861,6 +864,9 @@ public static class MissedUpdatesFinder extends MissedUpdatesFinderBase { this.nUpdates = nUpdates; } + @SuppressWarnings( + "ReferenceEquality") // MissedUpdatesRequest constants are singletons; identity check is + // intentional public MissedUpdatesRequest find(List otherVersions, Object updateFrom) { otherVersions.sort(absComparator); if (debug) { diff --git a/solr/core/src/java/org/apache/solr/update/PeerSyncWithLeader.java b/solr/core/src/java/org/apache/solr/update/PeerSyncWithLeader.java index 272e610718b9..a77274e9f5e2 100644 --- a/solr/core/src/java/org/apache/solr/update/PeerSyncWithLeader.java +++ b/solr/core/src/java/org/apache/solr/update/PeerSyncWithLeader.java @@ -217,6 +217,9 @@ public PeerSync.PeerSyncResult sync(List startingVersions) { } } + @SuppressWarnings( + "ReferenceEquality") // MissedUpdatesRequest constants are singletons; identity check is + // intentional private boolean doSync(List ourUpdates, long ourLowThreshold, long ourHighThreshold) { // get leader's recent versions and fingerprint // note: by getting leader's versions later, we guarantee that leader's versions always super @@ -246,6 +249,9 @@ private boolean doSync(List ourUpdates, long ourLowThreshold, long ourHigh return false; } + @SuppressWarnings( + "ReferenceEquality") // MissedUpdatesRequest constants are singletons; identity check is + // intentional private MissedUpdatesRequest buildMissedUpdatesRequest(NamedList rsp) { // we retrieved the last N updates from the replica @SuppressWarnings({"unchecked"}) @@ -430,6 +436,9 @@ public static class MissedUpdatesFinder extends PeerSync.MissedUpdatesFinderBase this.nUpdates = nUpdates; } + @SuppressWarnings( + "ReferenceEquality") // MissedUpdatesRequest constants are singletons; identity check is + // intentional public MissedUpdatesRequest find(List leaderVersions, Object updateFrom) { leaderVersions.sort(absComparator); log.debug("{} sorted versions from {} = {}", logPrefix, updateFrom, leaderVersions); diff --git a/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java b/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java index b35a9b3651fc..70330b89c71d 100644 --- a/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java +++ b/solr/core/src/java/org/apache/solr/update/SolrIndexConfig.java @@ -196,6 +196,9 @@ public SolrIndexConfig(ConfigNode cfg, SolrIndexConfig def) { } @Override + @SuppressWarnings( + "ReferenceEquality") // InfoStream.NO_OUTPUT is a Lucene sentinel; identity check is + // intentional public void writeMap(EntryWriter ew) throws IOException { ew.put("useCompoundFile", useCompoundFile) .put("maxBufferedDocs", maxBufferedDocs) diff --git a/solr/core/src/java/org/apache/solr/update/UpdateLog.java b/solr/core/src/java/org/apache/solr/update/UpdateLog.java index 17fd8477b277..2b0f202a4bdb 100644 --- a/solr/core/src/java/org/apache/solr/update/UpdateLog.java +++ b/solr/core/src/java/org/apache/solr/update/UpdateLog.java @@ -734,6 +734,8 @@ public boolean existOldBufferLog() { /* Takes over ownership of the log, keeping it until no longer needed and then decrementing its reference and dropping it. */ + @SuppressWarnings( + "ReferenceEquality") // TransactionLog identity, not equality, is what matters here protected synchronized void addOldLog(TransactionLog oldLog, boolean removeOld) { if (oldLog == null) return; @@ -1546,6 +1548,8 @@ public void copyOverOldUpdates(long commitVersion) { * @param commitVersion any updates that have version larger than the commitVersion will be copied * over */ + @SuppressWarnings( + "ReferenceEquality") // TransactionLog identity, not equality, is what matters here public void copyOverOldUpdates(long commitVersion, TransactionLog oldTlog) { copyOverOldUpdatesCounter.inc(); @@ -1701,7 +1705,10 @@ public void close(boolean committed) { close(committed, false); } - @SuppressWarnings("try") + @SuppressWarnings({ + "try", + "ReferenceEquality" // TransactionLog identity, not equality, is what matters here + }) public void close(boolean committed, boolean deleteOnClose) { try (Closeable c = releaseTlogDir) { recoveryExecutor.shutdown(); // no new tasks diff --git a/solr/core/src/java/org/apache/solr/update/processor/AllValuesOrNoneFieldMutatingUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/AllValuesOrNoneFieldMutatingUpdateProcessor.java index fb4a9de1d8ad..b7436751a2e7 100644 --- a/solr/core/src/java/org/apache/solr/update/processor/AllValuesOrNoneFieldMutatingUpdateProcessor.java +++ b/solr/core/src/java/org/apache/solr/update/processor/AllValuesOrNoneFieldMutatingUpdateProcessor.java @@ -74,6 +74,9 @@ public AllValuesOrNoneFieldMutatingUpdateProcessor( protected abstract Object mutateValue(final Object srcVal); @Override + @SuppressWarnings( + "ReferenceEquality") // *_SINGLETON constants are unique sentinels; identity check is + // intentional protected final SolrInputField mutate(final SolrInputField srcField) { Collection vals = srcField.getValues(); if (vals == null || vals.isEmpty()) return srcField; diff --git a/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateDocumentMerger.java b/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateDocumentMerger.java index 3cdb07069802..5bf1e6b77daa 100644 --- a/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateDocumentMerger.java +++ b/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateDocumentMerger.java @@ -383,6 +383,9 @@ && isDerivedFromDoc( * false is returned. A false return indicates that this update can be re-tried as a full * atomic update. Returns true if the in-place update succeeds. */ + @SuppressWarnings( + "ReferenceEquality") // RealTimeGetComponent.DELETED is a unique sentinel; identity check is + // intentional public boolean doInPlaceUpdateMerge(AddUpdateCommand cmd, Set updatedFields) throws IOException { SolrInputDocument inputDoc = cmd.getSolrInputDocument(); diff --git a/solr/core/src/java/org/apache/solr/update/processor/DocBasedVersionConstraintsProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/DocBasedVersionConstraintsProcessor.java index cbec14726499..7a6dbcde04df 100644 --- a/solr/core/src/java/org/apache/solr/update/processor/DocBasedVersionConstraintsProcessor.java +++ b/solr/core/src/java/org/apache/solr/update/processor/DocBasedVersionConstraintsProcessor.java @@ -188,6 +188,8 @@ private void validateUserVersions( } } + @SuppressWarnings( + "ReferenceEquality") // DELETED is a unique sentinel; identity check is intentional private DocFoundAndOldUserAndSolrVersions getOldUserVersionsFromFieldCache( BytesRef indexedDocId) { SolrInputDocument oldDoc = diff --git a/solr/core/src/java/org/apache/solr/update/processor/FieldMutatingUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/FieldMutatingUpdateProcessor.java index 8593294b6f2f..25b0d5a96fa6 100644 --- a/solr/core/src/java/org/apache/solr/update/processor/FieldMutatingUpdateProcessor.java +++ b/solr/core/src/java/org/apache/solr/update/processor/FieldMutatingUpdateProcessor.java @@ -132,6 +132,9 @@ public interface FieldNameSelector { * @return Either a new FieldNameSelector or one of the input selectors if the combination lends * itself to optimization. */ + @SuppressWarnings( + "ReferenceEquality") // SELECT_NO_FIELDS/SELECT_ALL_FIELDS are unique sentinels; identity + // check is intentional public static FieldNameSelector wrap( final FieldNameSelector includes, final FieldNameSelector excludes) { diff --git a/solr/core/src/java/org/apache/solr/update/processor/FieldValueMutatingUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/FieldValueMutatingUpdateProcessor.java index 1d81d6d84ed5..4e41bb61f729 100644 --- a/solr/core/src/java/org/apache/solr/update/processor/FieldValueMutatingUpdateProcessor.java +++ b/solr/core/src/java/org/apache/solr/update/processor/FieldValueMutatingUpdateProcessor.java @@ -57,6 +57,9 @@ public FieldValueMutatingUpdateProcessor( protected abstract Object mutateValue(final Object src); @Override + @SuppressWarnings( + "ReferenceEquality") // DELETE_VALUE_SINGLETON is a unique sentinel; identity check is + // intentional protected final SolrInputField mutate(final SolrInputField src) { Collection values = src.getValues(); if (values == null) return src; // don't mutate diff --git a/solr/core/src/java/org/apache/solr/update/processor/SkipExistingDocumentsProcessorFactory.java b/solr/core/src/java/org/apache/solr/update/processor/SkipExistingDocumentsProcessorFactory.java index b93d2ef25278..59281eb4cb85 100644 --- a/solr/core/src/java/org/apache/solr/update/processor/SkipExistingDocumentsProcessorFactory.java +++ b/solr/core/src/java/org/apache/solr/update/processor/SkipExistingDocumentsProcessorFactory.java @@ -191,6 +191,8 @@ boolean isSkipUpdateIfMissing() { return this.skipUpdateIfMissing; } + @SuppressWarnings( + "ReferenceEquality") // DELETED is a unique sentinel; identity check is intentional boolean doesDocumentExist(BytesRef indexedDocId) { assert null != indexedDocId; diff --git a/solr/core/src/test/org/apache/solr/TestGroupingSearch.java b/solr/core/src/test/org/apache/solr/TestGroupingSearch.java index 4ae2b55becbb..c2f82da4989e 100644 --- a/solr/core/src/test/org/apache/solr/TestGroupingSearch.java +++ b/solr/core/src/test/org/apache/solr/TestGroupingSearch.java @@ -1585,6 +1585,7 @@ public void testGroupingOnDateField() throws Exception { } @Test + @SuppressWarnings("ReferenceEquality") public void testRandomGrouping() throws Exception { /* * updateJ("{\"add\":{\"doc\":{\"id\":\"77\"}}}", params("commit","true")); @@ -1725,6 +1726,8 @@ public void testRandomGrouping() throws Exception { // now sort the groups // if sort != group.sort, we need to find the max doc by "sort" + // Identity check: groupComparator may deliberately be set to the same instance as + // sortComparator above. if (groupComparator != sortComparator) { for (Grp grp : groups.values()) grp.setMaxDoc(sortComparator); } diff --git a/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java index 2e190f60f89a..6b23340af583 100644 --- a/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java @@ -56,6 +56,7 @@ private void createCollection(String collection) throws IOException, SolrServerE } @Test + @SuppressWarnings("ReferenceEquality") public void testSimpleSliceLeaderElection() throws Exception { String collection = "collection1"; createCollection(collection); @@ -126,6 +127,7 @@ public void testSimpleSliceLeaderElection() throws Exception { // kill everyone but the first leader that should have reconnected by now for (JettySolrRunner jetty2 : cluster.getJettySolrRunners()) { + // Identity check: skip the one instance we want to keep running. if (jetty != jetty2) { jetty2.stop(); } diff --git a/solr/core/src/test/org/apache/solr/handler/TestStressThreadBackup.java b/solr/core/src/test/org/apache/solr/handler/TestStressThreadBackup.java index 70db545fced4..4bf2f4aac7aa 100644 --- a/solr/core/src/test/org/apache/solr/handler/TestStressThreadBackup.java +++ b/solr/core/src/test/org/apache/solr/handler/TestStressThreadBackup.java @@ -127,7 +127,7 @@ public void testReplicationHandler() throws Exception { new BackupAPIImpl() { final BackupStatusChecker backupStatus = new BackupStatusChecker(coreClient); - /** no solrj API for ReplicationHandler */ + /* no solrj API for ReplicationHandler */ private SolrRequest makeReplicationReq(SolrParams p) { return new GenericSolrRequest( GenericSolrRequest.METHOD.POST, @@ -137,7 +137,7 @@ private SolrRequest makeReplicationReq(SolrParams p) { .setRequiresCollection(true); } - /** + /* * Override default backup impl to hit ReplicationHandler, and then poll that same handler * until success */ diff --git a/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java b/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java index 101ee2a09b39..e581c574016c 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/TestApiFramework.java @@ -278,12 +278,14 @@ public InputStream getStream() { return rsp; } + @SuppressWarnings("ReferenceEquality") private SolrQueryResponse invoke( PluginBag reqHandlers, String path, String fullPath, CoreContainer mockCC) { HashMap parts = new HashMap<>(); + // Identity check: is reqHandlers the container's own handler bag, or a substitute? boolean containerHandlerLookup = mockCC.getRequestHandlers() == reqHandlers; path = path == null ? fullPath : path; Api api = null; diff --git a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java index 597e20445441..b519e2c3d3a1 100644 --- a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java +++ b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java @@ -740,6 +740,7 @@ public QParser createParser( } @Test + @SuppressWarnings("ReferenceEquality") public void testSchemaPlugins() throws Exception { String COLLECTION_NAME = "testSchemaLoadingColl"; System.setProperty("managed.schema.mutable", "true"); diff --git a/solr/core/src/test/org/apache/solr/schema/TestManagedSchemaThreadSafety.java b/solr/core/src/test/org/apache/solr/schema/TestManagedSchemaThreadSafety.java index e4cb21568900..4d79661b6920 100644 --- a/solr/core/src/test/org/apache/solr/schema/TestManagedSchemaThreadSafety.java +++ b/solr/core/src/test/org/apache/solr/schema/TestManagedSchemaThreadSafety.java @@ -63,9 +63,11 @@ private SuspendingZkClient(String zkServerAddress) { .withTimeout(ZK_CLIENT_TIMEOUT, TimeUnit.MILLISECONDS)); } + @SuppressWarnings("ReferenceEquality") boolean isSlowpoke() { Thread youKnow; if ((youKnow = slowpoke.get()) != null) { + // Thread identity comparison is intentional (and Thread has no meaningful equals()). return youKnow == Thread.currentThread(); } else { return slowpoke.compareAndSet(null, Thread.currentThread()); diff --git a/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java b/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java index a061d6ea7b20..150efb6483c9 100644 --- a/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java +++ b/solr/core/src/test/org/apache/solr/search/facet/TestJsonFacets.java @@ -3784,6 +3784,7 @@ public void doTestPrelimSortingDistrib(final boolean extraAgg, final boolean ext * @param extraSubFacet if an extra sub facet should be included, this hits slightly diff code * paths */ + @SuppressWarnings("ReferenceEquality") public void doTestPrelimSorting( final Client client, final boolean extraAgg, final boolean extraSubFacet) throws Exception { @@ -3799,6 +3800,7 @@ public void doTestPrelimSorting( // (which will affect some assertions) final SolrClient shardA = clients.get(0); final SolrClient shardB = clients.get(clients.size() - 1); + // Identity check: same client instance means a single-node setup. final int numShardsWithData = (shardA == shardB) ? 1 : 2; // for simplicity, each foo_s "term" exists on each shard in the same number of docs as it's diff --git a/solr/core/src/test/org/apache/solr/search/function/AggValueSourceTest.java b/solr/core/src/test/org/apache/solr/search/function/AggValueSourceTest.java index 5946d4dc955d..57099fcc6a66 100644 --- a/solr/core/src/test/org/apache/solr/search/function/AggValueSourceTest.java +++ b/solr/core/src/test/org/apache/solr/search/function/AggValueSourceTest.java @@ -45,8 +45,10 @@ static class CustomAggregate extends SimpleAggValueSource { } @Override + @SuppressWarnings("ReferenceEquality") public SlotAcc createSlotAcc(FacetContext fcontext, long numDocs, int numSlots) { // check we can get access to the request and searcher, via the context + // Identity check: verifying request and searcher share the exact same SolrCore instance. if (fcontext.getRequest().getCore() != fcontext.getSearcher().getCore()) { throw new IllegalStateException("Searcher and request out of sync"); } diff --git a/solr/core/src/test/org/apache/solr/uninverting/TestFieldCacheSortRandom.java b/solr/core/src/test/org/apache/solr/uninverting/TestFieldCacheSortRandom.java index 3e9ee3b70b9b..060d9d47c1be 100644 --- a/solr/core/src/test/org/apache/solr/uninverting/TestFieldCacheSortRandom.java +++ b/solr/core/src/test/org/apache/solr/uninverting/TestFieldCacheSortRandom.java @@ -351,7 +351,9 @@ public boolean equals(Object other) { return sameClassAs(other) && equalsTo(getClass().cast(other)); } + @SuppressWarnings("ReferenceEquality") private boolean equalsTo(RandomQuery other) { + // Consistent with hashCode(), which uses System.identityHashCode(docValues) below. return seed == other.seed && docValues == other.docValues && density == other.density; } diff --git a/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesStandalone.java b/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesStandalone.java index a5109562d0d6..65b9541d4c2d 100644 --- a/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesStandalone.java +++ b/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesStandalone.java @@ -1216,7 +1216,7 @@ public String toString() { * TestInPlaceUpdatesStandalone#HARDCOMMIT} or {@link TestInPlaceUpdatesStandalone#SOFTCOMMIT} * sentinel objects. */ - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings({"unchecked", "rawtypes", "ReferenceEquality"}) public void checkReplay(final String valField, Object... commands) throws Exception { HashMap model = new LinkedHashMap<>(); diff --git a/solr/cross-dc-manager/gradle.lockfile b/solr/cross-dc-manager/gradle.lockfile index 79e18051748a..e7f4ddaafe5f 100644 --- a/solr/cross-dc-manager/gradle.lockfile +++ b/solr/cross-dc-manager/gradle.lockfile @@ -23,11 +23,11 @@ com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,error com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor com.google.code.gson:gson:2.14.0=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/analysis-extras/gradle.lockfile b/solr/modules/analysis-extras/gradle.lockfile index 235a8594be7e..5d2073519d0a 100644 --- a/solr/modules/analysis-extras/gradle.lockfile +++ b/solr/modules/analysis-extras/gradle.lockfile @@ -17,11 +17,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/analysis-extras/src/java/org/apache/solr/update/processor/OpenNLPExtractNamedEntitiesUpdateProcessorFactory.java b/solr/modules/analysis-extras/src/java/org/apache/solr/update/processor/OpenNLPExtractNamedEntitiesUpdateProcessorFactory.java index 6c2b57b12a9f..19f84b0b472f 100644 --- a/solr/modules/analysis-extras/src/java/org/apache/solr/update/processor/OpenNLPExtractNamedEntitiesUpdateProcessorFactory.java +++ b/solr/modules/analysis-extras/src/java/org/apache/solr/update/processor/OpenNLPExtractNamedEntitiesUpdateProcessorFactory.java @@ -612,7 +612,7 @@ public void processAdd(AddUpdateCommand cmd) throws IOException { super.processAdd(cmd); } - /** + /* * Using configured NER model, extracts (name, type) pairs from the given source field value */ private List> extractTypedNamedEntities(Object srcFieldValue) diff --git a/solr/modules/clustering/gradle.lockfile b/solr/modules/clustering/gradle.lockfile index 6805293d44af..1f48c17dc79b 100644 --- a/solr/modules/clustering/gradle.lockfile +++ b/solr/modules/clustering/gradle.lockfile @@ -17,11 +17,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/cross-dc/gradle.lockfile b/solr/modules/cross-dc/gradle.lockfile index c66f4b097fad..adc7fc8b6784 100644 --- a/solr/modules/cross-dc/gradle.lockfile +++ b/solr/modules/cross-dc/gradle.lockfile @@ -19,11 +19,11 @@ com.github.luben:zstd-jni:1.5.6-10=jarValidation,runtimeClasspath,runtimeLibs,te com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/cuvs/gradle.lockfile b/solr/modules/cuvs/gradle.lockfile index e62d4f239795..9918580000a7 100644 --- a/solr/modules/cuvs/gradle.lockfile +++ b/solr/modules/cuvs/gradle.lockfile @@ -17,11 +17,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/extraction/gradle.lockfile b/solr/modules/extraction/gradle.lockfile index 40fd886cdca3..be3c21c0149e 100644 --- a/solr/modules/extraction/gradle.lockfile +++ b/solr/modules/extraction/gradle.lockfile @@ -20,11 +20,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/gcs-repository/gradle.lockfile b/solr/modules/gcs-repository/gradle.lockfile index ee670fe73242..049b7d689b4e 100644 --- a/solr/modules/gcs-repository/gradle.lockfile +++ b/solr/modules/gcs-repository/gradle.lockfile @@ -40,11 +40,11 @@ com.google.cloud:google-cloud-core:2.74.0=compileClasspath,jarValidation,runtime com.google.cloud:google-cloud-nio:0.136.0=jarValidation,testCompileClasspath,testRuntimeClasspath com.google.cloud:google-cloud-storage:2.72.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath com.google.code.gson:gson:2.14.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/jwt-auth/gradle.lockfile b/solr/modules/jwt-auth/gradle.lockfile index acdb4e22107e..4b2df65c7d9c 100644 --- a/solr/modules/jwt-auth/gradle.lockfile +++ b/solr/modules/jwt-auth/gradle.lockfile @@ -19,11 +19,11 @@ com.github.stephenc.jcip:jcip-annotations:1.0-1=jarValidation,testCompileClasspa com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/langid/gradle.lockfile b/solr/modules/langid/gradle.lockfile index cb10126f629a..f0fe7652bc37 100644 --- a/solr/modules/langid/gradle.lockfile +++ b/solr/modules/langid/gradle.lockfile @@ -17,11 +17,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/language-models/gradle.lockfile b/solr/modules/language-models/gradle.lockfile index b710cb47830b..30cff4589542 100644 --- a/solr/modules/language-models/gradle.lockfile +++ b/solr/modules/language-models/gradle.lockfile @@ -18,11 +18,11 @@ com.github.stephenc.jcip:jcip-annotations:1.0-1=compileClasspath,jarValidation com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/ltr/gradle.lockfile b/solr/modules/ltr/gradle.lockfile index 69ec5ff7600b..ebcb462a4b11 100644 --- a/solr/modules/ltr/gradle.lockfile +++ b/solr/modules/ltr/gradle.lockfile @@ -17,11 +17,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java b/solr/modules/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java index 37362c806425..ae0f23a0d1f7 100644 --- a/solr/modules/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java +++ b/solr/modules/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java @@ -135,6 +135,7 @@ protected void validate() throws FeatureException { public class SolrFeatureWeight extends FeatureWeight { private final Weight solrQueryWeight; + @SuppressWarnings("ReferenceEquality") public SolrFeatureWeight( SolrIndexSearcher searcher, SolrQueryRequest request, @@ -189,6 +190,8 @@ public SolrFeatureWeight( } DocSet filtersDocSet = searcher.getDocSet(filterQueries); // execute + // getDocSet() returns the live docs instance itself when there's nothing to filter; + // identity comparison detects that no-op case. if (filtersDocSet != searcher.getLiveDocSet()) { filterDocSetQuery = filtersDocSet.makeQuery(); } diff --git a/solr/modules/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java b/solr/modules/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java index 21cca2288580..33945bb80743 100644 --- a/solr/modules/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java +++ b/solr/modules/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java @@ -286,8 +286,10 @@ public void normalizeFeaturesInPlace(float[] modelFeatureValues) { } } + @SuppressWarnings("ReferenceEquality") public Explanation getNormalizerExplanation(Explanation e, int idx) { Normalizer n = norms.get(idx); + // IdentityNormalizer.INSTANCE is a singleton; identity comparison is intentional. if (n != IdentityNormalizer.INSTANCE) { return n.explain(e); } diff --git a/solr/modules/opentelemetry/gradle.lockfile b/solr/modules/opentelemetry/gradle.lockfile index 391274fdbfa9..2b4ee796954b 100644 --- a/solr/modules/opentelemetry/gradle.lockfile +++ b/solr/modules/opentelemetry/gradle.lockfile @@ -17,11 +17,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/s3-repository/gradle.lockfile b/solr/modules/s3-repository/gradle.lockfile index 4ad00b42c80d..bfe9e95610ba 100644 --- a/solr/modules/s3-repository/gradle.lockfile +++ b/solr/modules/s3-repository/gradle.lockfile @@ -21,11 +21,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/scripting/gradle.lockfile b/solr/modules/scripting/gradle.lockfile index 22ad3c839cfb..ec10baf4e8f0 100644 --- a/solr/modules/scripting/gradle.lockfile +++ b/solr/modules/scripting/gradle.lockfile @@ -17,11 +17,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/sql/gradle.lockfile b/solr/modules/sql/gradle.lockfile index 55b71dbbeee8..826736141246 100644 --- a/solr/modules/sql/gradle.lockfile +++ b/solr/modules/sql/gradle.lockfile @@ -17,11 +17,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrAggregate.java b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrAggregate.java index 1e3c2f7e226a..c3d3da165cc3 100644 --- a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrAggregate.java +++ b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrAggregate.java @@ -55,6 +55,7 @@ static String solrAggMetricId(String metric, String column) { return String.format(Locale.ROOT, "%s(%s)", funcName, column); } + @SuppressWarnings("ReferenceEquality") SolrAggregate( RelOptCluster cluster, RelTraitSet traitSet, @@ -64,6 +65,7 @@ static String solrAggMetricId(String metric, String column) { List groupSets, List aggCalls) { super(cluster, traitSet, hints, child, groupSet, groupSets, aggCalls); + // Conventions are singletons (see SolrRel.CONVENTION); identity comparison is intentional. assert getConvention() == SolrRel.CONVENTION; assert getConvention() == child.getConvention(); } diff --git a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrFilter.java b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrFilter.java index cbc0cf7dfc0d..43a49f8b0e9a 100644 --- a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrFilter.java +++ b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrFilter.java @@ -77,8 +77,10 @@ String toQuery() { private final RexBuilder builder; + @SuppressWarnings("ReferenceEquality") SolrFilter(RelOptCluster cluster, RelTraitSet traitSet, RelNode child, RexNode condition) { super(cluster, traitSet, child, condition); + // Conventions are singletons (see SolrRel.CONVENTION); identity comparison is intentional. assert getConvention() == SolrRel.CONVENTION; assert getConvention() == child.getConvention(); builder = child.getCluster().getRexBuilder(); diff --git a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrProject.java b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrProject.java index 87ac4633b8ab..121f3536c2ac 100644 --- a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrProject.java +++ b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrProject.java @@ -30,6 +30,7 @@ /** Implementation of {@link org.apache.calcite.rel.core.Project} relational expression in Solr. */ class SolrProject extends Project implements SolrRel { + @SuppressWarnings("ReferenceEquality") SolrProject( RelOptCluster cluster, RelTraitSet traitSet, @@ -37,6 +38,7 @@ class SolrProject extends Project implements SolrRel { List projects, RelDataType rowType) { super(cluster, traitSet, input, projects, rowType); + // Conventions are singletons (see SolrRel.CONVENTION); identity comparison is intentional. assert getConvention() == SolrRel.CONVENTION; assert getConvention() == input.getConvention(); } diff --git a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrSort.java b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrSort.java index f5fb75d9d481..2c0c3ed9d646 100644 --- a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrSort.java +++ b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrSort.java @@ -33,6 +33,7 @@ /** Implementation of {@link org.apache.calcite.rel.core.Sort} relational expression in Solr. */ class SolrSort extends Sort implements SolrRel { + @SuppressWarnings("ReferenceEquality") SolrSort( RelOptCluster cluster, RelTraitSet traitSet, @@ -42,6 +43,7 @@ class SolrSort extends Sort implements SolrRel { RexNode fetch) { super(cluster, traitSet, child, collation, offset, fetch); + // Conventions are singletons (see SolrRel.CONVENTION); identity comparison is intentional. assert getConvention() == SolrRel.CONVENTION; assert getConvention() == child.getConvention(); } diff --git a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrTableScan.java b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrTableScan.java index f2ae04e33fb2..8217af20f0ea 100644 --- a/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrTableScan.java +++ b/solr/modules/sql/src/java/org/apache/solr/handler/sql/SolrTableScan.java @@ -44,6 +44,7 @@ class SolrTableScan extends TableScan implements SolrRel { * @param solrTable Solr table * @param projectRowType Fields and types to project; null to project raw row */ + @SuppressWarnings("ReferenceEquality") SolrTableScan( RelOptCluster cluster, RelTraitSet traitSet, @@ -55,6 +56,7 @@ class SolrTableScan extends TableScan implements SolrRel { this.projectRowType = projectRowType; assert solrTable != null; + // Conventions are singletons (see SolrRel.CONVENTION); identity comparison is intentional. assert getConvention() == SolrRel.CONVENTION; } diff --git a/solr/server/gradle.lockfile b/solr/server/gradle.lockfile index b76e86b7a89d..4086feee710d 100644 --- a/solr/server/gradle.lockfile +++ b/solr/server/gradle.lockfile @@ -16,11 +16,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,errorprone,jarValidation,runtimeClasspath,solrCore,testAnnotationProcessor -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,errorprone,jarValidation,runtimeClasspath,solrCore,testAnnotationProcessor com.google.guava:guava:33.7.1-jre=annotationProcessor,errorprone,jarValidation,runtimeClasspath,solrCore,testAnnotationProcessor com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,errorprone,jarValidation,runtimeClasspath,solrCore,testAnnotationProcessor diff --git a/solr/solr-ref-guide/gradle.lockfile b/solr/solr-ref-guide/gradle.lockfile index c07281d16cd3..110c44f1131f 100644 --- a/solr/solr-ref-guide/gradle.lockfile +++ b/solr/solr-ref-guide/gradle.lockfile @@ -17,11 +17,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,errorprone,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,errorprone,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,errorprone,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/solrj-jetty/gradle.lockfile b/solr/solrj-jetty/gradle.lockfile index ab7a4556e4a1..f73618cdef5c 100644 --- a/solr/solrj-jetty/gradle.lockfile +++ b/solr/solrj-jetty/gradle.lockfile @@ -18,11 +18,11 @@ com.github.stephenc.jcip:jcip-annotations:1.0-1=compileClasspath,jarValidation com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/solrj-streaming/gradle.lockfile b/solr/solrj-streaming/gradle.lockfile index 9a3c0a9cba38..9c8038cd0e7d 100644 --- a/solr/solrj-streaming/gradle.lockfile +++ b/solr/solrj-streaming/gradle.lockfile @@ -17,11 +17,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/comp/FieldComparator.java b/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/comp/FieldComparator.java index 57f4f5da259a..e8085508fe2b 100644 --- a/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/comp/FieldComparator.java +++ b/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/comp/FieldComparator.java @@ -106,7 +106,7 @@ public Explanation toExplanation(StreamFactory factory) throws IOException { * check only once - we can do that in the constructor of this class, create a lambda, and then execute * that lambda in the compare function. A bit of branch prediction savings right here. */ - @SuppressWarnings({"unchecked"}) + @SuppressWarnings({"unchecked", "ReferenceEquality"}) // fast path: same ref implies equal private void assignComparator() { if (ComparatorOrder.DESCENDING == order) { comparator = diff --git a/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/eq/FieldEqualitor.java b/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/eq/FieldEqualitor.java index f17b62afc9a9..59a903a4caaf 100644 --- a/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/eq/FieldEqualitor.java +++ b/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/eq/FieldEqualitor.java @@ -76,7 +76,7 @@ public Explanation toExplanation(StreamFactory factory) throws IOException { } @Override - @SuppressWarnings({"unchecked"}) + @SuppressWarnings({"unchecked", "ReferenceEquality"}) // fast path: same ref implies equal public boolean test(Tuple leftTuple, Tuple rightTuple) { @SuppressWarnings({"rawtypes"}) diff --git a/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/stream/JavabinTupleStreamParser.java b/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/stream/JavabinTupleStreamParser.java index 5209d29e4be5..e49174bf241a 100644 --- a/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/stream/JavabinTupleStreamParser.java +++ b/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/stream/JavabinTupleStreamParser.java @@ -43,6 +43,8 @@ public JavabinTupleStreamParser(InputStream is, boolean onlyJsonTypes) throws IO this.fis = initRead(is); } + @SuppressWarnings( + "ReferenceEquality") // END_OBJ is a unique sentinel; identity check is intentional private boolean readTillDocs() throws IOException { if (isObjectType(fis)) { if (tagByte == SOLRDOCLST) { @@ -177,7 +179,10 @@ protected Object readObject(DataInputInputStream dis) throws IOException { } @Override - @SuppressWarnings({"unchecked"}) + @SuppressWarnings({ + "unchecked", + "ReferenceEquality" // END_OBJ is a unique sentinel; identity check is intentional + }) public Map next() throws IOException { if (!atDocs) { atDocs = true; diff --git a/solr/solrj-zookeeper/gradle.lockfile b/solr/solrj-zookeeper/gradle.lockfile index 3aa75d271f87..6bc5794cca54 100644 --- a/solr/solrj-zookeeper/gradle.lockfile +++ b/solr/solrj-zookeeper/gradle.lockfile @@ -18,11 +18,11 @@ com.github.spotbugs:spotbugs-annotations:4.10.4=compileClasspath com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkStateReader.java b/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkStateReader.java index 81ddf93b26c9..145a448c8ab5 100644 --- a/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkStateReader.java +++ b/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkStateReader.java @@ -1270,6 +1270,8 @@ class StateWatcher implements Watcher { } @Override + @SuppressWarnings( + "ReferenceEquality") // checking identity of the registered watcher, not equality public void process(WatchedEvent event) { // session events are not change events, and do not remove the watcher if (EventType.None.equals(event.getType())) { @@ -2007,6 +2009,8 @@ public Aliases getAliases() { * modifications, giving up after 30 seconds with a SolrException. The caller should understand * it's possible the aliases has further changed if it examines it. */ + @SuppressWarnings( + "ReferenceEquality") // op.apply returning the same instance means "no change made" public void applyModificationAndExportToZk(UnaryOperator op) { // The current aliases hasn't been update()'ed yet -- which is impossible? Any way just // update it first. diff --git a/solr/solrj/gradle.lockfile b/solr/solrj/gradle.lockfile index ef914c21dd08..075cdca0ea16 100644 --- a/solr/solrj/gradle.lockfile +++ b/solr/solrj/gradle.lockfile @@ -18,11 +18,11 @@ com.github.stephenc.jcip:jcip-annotations:1.0-1=compileClasspath,jarValidation com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,errorprone,jarValidation,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateBaseSolrClient.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateBaseSolrClient.java index 5baeaec60a98..50ab27f1dc42 100644 --- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateBaseSolrClient.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateBaseSolrClient.java @@ -141,6 +141,8 @@ public boolean isEmpty() { return size() == 0; } + @SuppressWarnings( + "ReferenceEquality") // backdoorE is a unique sentinel; identity check is intentional public E poll(long timeout, TimeUnit unit) throws InterruptedException { E e = queue.poll(timeout, unit); if (e == null) { diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java index ac7af67427c8..acc54f5859a7 100644 --- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java @@ -357,7 +357,7 @@ public SolrParams getParams() { } } - /** Specific Collection API call implementations * */ + /* Specific Collection API call implementations */ /** * Returns a SolrRequest for creating a collection diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java b/solr/solrj/src/java/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java index 5da32870e044..9f232e48b5f5 100644 --- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java @@ -218,6 +218,8 @@ public List readIterator(DataInputInputStream fis) throws IOException { return List.of(); // bogus; already processed } + @SuppressWarnings( + "ReferenceEquality") // END_OBJ is a unique sentinel; identity check is intentional private void readDocs(DataInputInputStream fis) throws IOException { if (resultNamedList == null) resultNamedList = new NamedList<>(); diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/response/ResponseParser.java b/solr/solrj/src/java/org/apache/solr/client/solrj/response/ResponseParser.java index 9884d8a1ef57..47dfdccedeee 100644 --- a/solr/solrj/src/java/org/apache/solr/client/solrj/response/ResponseParser.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/response/ResponseParser.java @@ -34,6 +34,7 @@ protected ResponseParser() { assert validateContentTypes(); } + @SuppressWarnings("ReferenceEquality") // Use of == is intentional here private boolean validateContentTypes() { Collection contentTypes = getContentTypes(); assert contentTypes == getContentTypes() diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/routing/RequestReplicaListTransformerGenerator.java b/solr/solrj/src/java/org/apache/solr/client/solrj/routing/RequestReplicaListTransformerGenerator.java index 4071dd7527f9..d3bfaf7eee6b 100644 --- a/solr/solrj/src/java/org/apache/solr/client/solrj/routing/RequestReplicaListTransformerGenerator.java +++ b/solr/solrj/src/java/org/apache/solr/client/solrj/routing/RequestReplicaListTransformerGenerator.java @@ -216,7 +216,7 @@ public void transform(List choices) { if (log.isDebugEnabled()) { log.debug( "Applied sorting preferences to replica list: {}", - choices.stream().map(T::toString).collect(Collectors.joining(",", "[", "]"))); + choices.stream().map(Object::toString).collect(Collectors.joining(",", "[", "]"))); } } } diff --git a/solr/solrj/src/java/org/apache/solr/common/SolrDocument.java b/solr/solrj/src/java/org/apache/solr/common/SolrDocument.java index e363352fe6ab..ed071a416ff4 100644 --- a/solr/solrj/src/java/org/apache/solr/common/SolrDocument.java +++ b/solr/solrj/src/java/org/apache/solr/common/SolrDocument.java @@ -254,7 +254,7 @@ public void visitSelfAndNestedDocs(BiConsumer consumer) { /** Expose a Map interface to the solr field value collection. */ public Map> getFieldValuesMap() { return new Map<>() { - /** Get the field Value */ + /* Get the field Value */ @Override public Collection get(Object key) { return getFieldValues((String) key); @@ -327,7 +327,7 @@ public String toString() { /** Expose a Map interface to the solr fields. This function is useful for JSTL */ public Map getFieldValueMap() { return new Map<>() { - /** Get the field Value */ + /* Get the field Value */ @Override public Object get(Object key) { return getFirstValue((String) key); diff --git a/solr/solrj/src/java/org/apache/solr/common/util/CommandOperation.java b/solr/solrj/src/java/org/apache/solr/common/util/CommandOperation.java index 39dac664d18f..91e4da4a2bc4 100644 --- a/solr/solrj/src/java/org/apache/solr/common/util/CommandOperation.java +++ b/solr/solrj/src/java/org/apache/solr/common/util/CommandOperation.java @@ -48,7 +48,7 @@ public Object getCommandData() { public String getStr(String key, String def) { if (ROOT_OBJ.equals(key)) { Object obj = getRootPrimitive(); - return obj == def ? null : String.valueOf(obj); + return obj == null ? def : String.valueOf(obj); } Object o = getMapVal(key); return o == null ? def : String.valueOf(o); diff --git a/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java b/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java index 12f7f4cf4bb7..f1db025fe4ff 100644 --- a/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java +++ b/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java @@ -826,6 +826,8 @@ public void writeSolrInputDocument(SolrInputDocument sdoc) throws IOException { } } + @SuppressWarnings( + "ReferenceEquality") // END_OBJ is a unique sentinel; identity check is intentional public Map readMapIter(DataInputInputStream dis) throws IOException { Map m = newMap(-1); for (; ; ) { @@ -931,6 +933,8 @@ public void writeIterator(Iterator iter) throws IOException { writeTag(END); } + @SuppressWarnings( + "ReferenceEquality") // END_OBJ is a unique sentinel; identity check is intentional public List readIterator(DataInputInputStream fis) throws IOException { ArrayList l = new ArrayList<>(); while (true) { @@ -1237,6 +1241,8 @@ public void writeFloat(float val) throws IOException { daos.writeFloat(val); } + @SuppressWarnings( + "ReferenceEquality") // END_OBJ is a unique sentinel; identity check is intentional public boolean writePrimitive(Object val) throws IOException { if (val == null) { daos.writeByte(NULL); diff --git a/solr/solrj/src/test/org/apache/solr/common/util/TestFastWriter.java b/solr/solrj/src/test/org/apache/solr/common/util/TestFastWriter.java index 382c2093c98f..71a95f4912b8 100644 --- a/solr/solrj/src/test/org/apache/solr/common/util/TestFastWriter.java +++ b/solr/solrj/src/test/org/apache/solr/common/util/TestFastWriter.java @@ -33,7 +33,9 @@ public MemWriter(char[] tempBuffer, Random r) { } @Override + @SuppressWarnings("ReferenceEquality") public void flush(char[] arr, int offset, int len) throws IOException { + // Identity check: only steal the internal buffer when it's the exact same array instance. if (arr == buf && offset == 0 && len == buf.length) { buffers.add(buf); // steal the buffer buf = new char[r.nextInt(9000) + 1]; diff --git a/solr/test-framework/gradle.lockfile b/solr/test-framework/gradle.lockfile index fe7a9b5ac079..309368d720ec 100644 --- a/solr/test-framework/gradle.lockfile +++ b/solr/test-framework/gradle.lockfile @@ -19,11 +19,11 @@ com.github.spotbugs:spotbugs-annotations:4.10.4=compileClasspath com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath diff --git a/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java b/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java index 11aa4fb83a0f..9d2b46aa5bc2 100644 --- a/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java +++ b/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java @@ -902,6 +902,7 @@ public static String compare(Object[] a, Object[] b, int flags, Map handle) { if (a == b) return null; if (a == null || b == null) return ":" + a + "!=" + b; diff --git a/solr/test-framework/src/java/org/apache/solr/JSONTestUtil.java b/solr/test-framework/src/java/org/apache/solr/JSONTestUtil.java index 08df42a6c8f3..88bb48b1b1a3 100644 --- a/solr/test-framework/src/java/org/apache/solr/JSONTestUtil.java +++ b/solr/test-framework/src/java/org/apache/solr/JSONTestUtil.java @@ -215,6 +215,7 @@ public boolean match(Object expected) { return match(); } + @SuppressWarnings("ReferenceEquality") // fast path: same ref implies equal boolean match() { if (expected == val) { return true; diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java index 295f595bf1c8..5181a264bf77 100644 --- a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java +++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java @@ -473,6 +473,8 @@ public static void newRandomConfig() { randomizeNumericTypesProperties(); } + @SuppressWarnings( + "ReferenceEquality") // detecting a self-referencing exception cause loop, by identity public static Throwable getWrappedException(Throwable e) { while (e != null && e.getCause() != e && e.getCause() != null) { e = e.getCause(); @@ -2253,8 +2255,9 @@ public static void copyMinConf(Path dstRoot, String propertiesContent, String so // Creates a consistent configuration, _including_ solr.xml at dstRoot. Creates collection1/conf // and copies the stock files in there. - /** Copies the test collection1 config into {@code dstRoot}/{@code collection}/conf */ /** + * Copies the test collection1 config into {@code dstRoot}/{@code collection}/conf + * * @deprecated Use a basic config plus whatever is needed, or the default config, instead of * copying the full collection1 test config. */ @@ -2286,6 +2289,7 @@ public static void copySolrHomeToTemp(Path dstRoot, String collection) throws IO Files.copy(top.resolve("synonyms.txt"), subHome.resolve("synonyms.txt")); } + @SuppressWarnings("ReferenceEquality") // fast path: same ref implies equal public boolean compareSolrDocument(Object expected, Object actual) { if (!(expected instanceof SolrDocument solrDocument1) @@ -2336,6 +2340,7 @@ public boolean compareSolrDocument(Object expected, Object actual) { } } + @SuppressWarnings("ReferenceEquality") // fast path: same ref implies equal public boolean compareSolrDocumentList(Object expected, Object actual) { if (!(expected instanceof SolrDocumentList list1) || !(actual instanceof SolrDocumentList list2)) { @@ -2367,6 +2372,7 @@ public boolean compareSolrDocumentList(Object expected, Object actual) { return true; } + @SuppressWarnings("ReferenceEquality") // fast path: same ref implies equal public boolean compareSolrInputDocument(Object expected, Object actual) { if (!(expected instanceof SolrInputDocument sdoc1) @@ -2441,6 +2447,7 @@ public boolean compareSolrInputDocument(Object expected, Object actual) { } } + @SuppressWarnings("ReferenceEquality") // fast path: same ref implies equal public boolean assertSolrInputFieldEquals(Object expected, Object actual) { if (!(expected instanceof SolrInputField sif1) || !(actual instanceof SolrInputField sif2)) { return false; @@ -2530,8 +2537,6 @@ private void randomizeCloudSolrClient() { * directly * * @param url the base URL for a Solr node. Should not contain a core or collection name. - */ - /** * @deprecated Prefer an existing client, e.g. from a {@link * org.apache.solr.util.SolrClientTestRule} or {@link * org.apache.solr.embedded.JettySolrRunner#getSolrClient()}. @@ -2541,8 +2546,9 @@ public static HttpJettySolrClient getHttpSolrClient(String url) { return new HttpJettySolrClient.Builder(url).build(); } - /** Create a basic HttpSolrClient pointed at the specified replica */ /** + * Create a basic HttpSolrClient pointed at the specified replica + * * @deprecated Prefer an existing client, e.g. from a {@link * org.apache.solr.util.SolrClientTestRule} or {@link * org.apache.solr.embedded.JettySolrRunner#getSolrClient()}. @@ -2560,8 +2566,6 @@ public static HttpJettySolrClient getHttpSolrClient(Replica replica) { * @param url the base URL of a Solr node. Should not include a collection or core name. * @param defaultCoreName the name of a core that the created client should default to when making * core-aware requests - */ - /** * @deprecated Prefer an existing client, e.g. from a {@link * org.apache.solr.util.SolrClientTestRule} or {@link * org.apache.solr.embedded.JettySolrRunner#getSolrClient()}. @@ -2605,6 +2609,8 @@ public static String randomXmlUsableUnicodeString() { return result; } + @SuppressWarnings( + "ReferenceEquality") // SolrIndexSearcher identity, not equality, is what matters here protected static void waitForWarming(SolrCore core) throws InterruptedException { RefCounted registeredSearcher = core.getRegisteredSearcher(); RefCounted newestSearcher = core.getNewestSearcher(false); diff --git a/solr/test-framework/src/java/org/apache/solr/cluster/placement/Builders.java b/solr/test-framework/src/java/org/apache/solr/cluster/placement/Builders.java index 03cc95228387..f363239a5652 100644 --- a/solr/test-framework/src/java/org/apache/solr/cluster/placement/Builders.java +++ b/solr/test-framework/src/java/org/apache/solr/cluster/placement/Builders.java @@ -515,6 +515,8 @@ public ShardBuilder setLeader(ReplicaBuilder leaderReplicaBuilder) { return this; } + @SuppressWarnings( + "ReferenceEquality") // ReplicaBuilder identity, not equality, is what matters here public Shard build(SolrCollection collection) { ClusterAbstractionsForTest.ShardImpl shard = new ClusterAbstractionsForTest.ShardImpl(shardName, collection, Shard.ShardState.ACTIVE); diff --git a/solr/test-framework/src/java/org/apache/solr/embedded/JettySolrRunner.java b/solr/test-framework/src/java/org/apache/solr/embedded/JettySolrRunner.java index bd97bf8c690e..3e75b62e2e09 100644 --- a/solr/test-framework/src/java/org/apache/solr/embedded/JettySolrRunner.java +++ b/solr/test-framework/src/java/org/apache/solr/embedded/JettySolrRunner.java @@ -588,6 +588,8 @@ private void retryOnPortBindFailure(int portRetryTime, int port) throws Exceptio * @param ioe An IOException that might wrap a BindException * @return A bind exception if present otherwise ioe */ + @SuppressWarnings( + "ReferenceEquality") // detecting a self-referencing exception cause loop, by identity Exception lookForBindException(IOException ioe) { Exception e = ioe; while (e.getCause() != null && !(e == e.getCause()) && !(e instanceof BindException)) { diff --git a/solr/test-framework/src/java/org/apache/solr/util/RevertDefaultThreadHandlerRule.java b/solr/test-framework/src/java/org/apache/solr/util/RevertDefaultThreadHandlerRule.java index 89778e80ae93..d178473034ac 100644 --- a/solr/test-framework/src/java/org/apache/solr/util/RevertDefaultThreadHandlerRule.java +++ b/solr/test-framework/src/java/org/apache/solr/util/RevertDefaultThreadHandlerRule.java @@ -28,6 +28,8 @@ public final class RevertDefaultThreadHandlerRule implements TestRule { private static final AtomicBoolean applied = new AtomicBoolean(); @Override + @SuppressWarnings( + "ReferenceEquality") // UncaughtExceptionHandler identity, not equality, is what matters here public Statement apply(Statement s, Description d) { return new StatementAdapter(s) { @Override diff --git a/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java b/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java index 9a62ecb2afba..034b7e38e06a 100644 --- a/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java +++ b/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java @@ -319,19 +319,19 @@ private static byte[] fillData(byte[] data) { /** SPI Used to init all instances */ private static final SecureRandomSpi NOT_SECURE_SPI = new SecureRandomSpi() { - /** returns a new byte[] filled with static data */ + /* returns a new byte[] filled with static data */ @Override public byte[] engineGenerateSeed(int numBytes) { return fillData(new byte[numBytes]); } - /** fills the byte[] with static data */ + /* fills the byte[] with static data */ @Override public void engineNextBytes(byte[] bytes) { fillData(bytes); } - /** NOOP */ + /* NOOP */ @Override public void engineSetSeed(byte[] seed) { /* NOOP */ diff --git a/solr/webapp/gradle.lockfile b/solr/webapp/gradle.lockfile index ca453a10ddad..d0833bbe87a4 100644 --- a/solr/webapp/gradle.lockfile +++ b/solr/webapp/gradle.lockfile @@ -17,11 +17,11 @@ com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor com.google.auto:auto-common:1.2.2=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_annotation:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_annotation:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.errorprone:error_prone_annotations:2.50.0=annotationProcessor,errorprone,jarValidation,solrCore,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath -com.google.errorprone:error_prone_check_api:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.errorprone:error_prone_core:2.41.0=annotationProcessor,errorprone,testAnnotationProcessor -com.google.googlejavaformat:google-java-format:1.27.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_check_api:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.errorprone:error_prone_core:2.50.0=annotationProcessor,errorprone,testAnnotationProcessor +com.google.googlejavaformat:google-java-format:1.35.0=annotationProcessor,errorprone,testAnnotationProcessor com.google.guava:failureaccess:1.0.3=annotationProcessor,errorprone,jarValidation,solrCore,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:guava:33.7.1-jre=annotationProcessor,errorprone,jarValidation,solrCore,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,errorprone,jarValidation,solrCore,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath