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

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


The following commit(s) were added to refs/heads/main by this push:
     new 5352b58c42e SOLR-18352: Improve DX by more accurately communicating 
deprecated code status (#4750)
5352b58c42e is described below

commit 5352b58c42ea14bfbe38d135c08b50ee7562a6d2
Author: Eric Pugh <[email protected]>
AuthorDate: Fri Aug 28 08:35:53 2026 -0400

    SOLR-18352: Improve DX by more accurately communicating deprecated code 
status (#4750)
    
    Co-authored-by: David Smiley <[email protected]>
---
 AGENTS.md                                          | 10 ++++++++
 .../api/model/BalanceReplicasRequestBody.java      |  5 ++++
 .../api/model/CreateCollectionRequestBody.java     |  5 ++++
 .../client/api/model/CreateReplicaRequestBody.java |  5 ++++
 .../client/api/model/CreateShardRequestBody.java   |  5 ++++
 .../api/model/MigrateReplicasRequestBody.java      |  5 ++++
 .../client/api/model/ReplaceNodeRequestBody.java   |  5 ++++
 .../java/org/apache/solr/core/CoreContainer.java   |  2 +-
 .../src/java/org/apache/solr/core/SolrCore.java    |  2 +-
 .../java/org/apache/solr/handler/ClusterAPI.java   |  8 +++++++
 .../apache/solr/handler/admin/ClusterStatus.java   |  4 ++++
 .../java/org/apache/solr/legacy/BBoxStrategy.java  | 16 +++++++++----
 .../org/apache/solr/legacy/BBoxValueSource.java    |  3 ++-
 .../org/apache/solr/legacy/LegacyDoubleField.java  |  2 +-
 .../java/org/apache/solr/legacy/LegacyField.java   |  2 +-
 .../org/apache/solr/legacy/LegacyFieldType.java    | 10 ++++----
 .../org/apache/solr/legacy/LegacyFloatField.java   |  2 +-
 .../org/apache/solr/legacy/LegacyIntField.java     |  2 +-
 .../org/apache/solr/legacy/LegacyLongField.java    |  2 +-
 .../solr/legacy/LegacyNumericRangeQuery.java       |  2 +-
 .../solr/legacy/LegacyNumericTokenStream.java      |  2 +-
 .../org/apache/solr/legacy/LegacyNumericType.java  |  2 +-
 .../org/apache/solr/legacy/LegacyNumericUtils.java |  2 +-
 .../org/apache/solr/response/DocsStreamer.java     |  3 ++-
 .../java/org/apache/solr/schema/TrieDateField.java |  5 ++--
 .../org/apache/solr/schema/TrieDoubleField.java    |  5 ++--
 .../src/java/org/apache/solr/schema/TrieField.java | 11 +++++----
 .../org/apache/solr/schema/TrieFloatField.java     |  5 ++--
 .../java/org/apache/solr/schema/TrieIntField.java  |  5 ++--
 .../java/org/apache/solr/schema/TrieLongField.java |  5 ++--
 .../search/EarlyTerminatingSortingCollector.java   |  2 +-
 .../search/LegacyNumericRangeQueryBuilder.java     |  2 +-
 .../solr/search/NumericHidingLeafReader.java       |  2 +-
 .../src/java/org/apache/solr/spelling/Token.java   |  2 +-
 .../org/apache/solr/uninverting/FieldCache.java    | 10 ++++----
 .../apache/solr/uninverting/UninvertingReader.java |  8 +++----
 .../messageprocessor/TestMessageProcessor.java     |  5 ++++
 .../solr/client/solrj/io/SolrClientCache.java      |  2 +-
 ...eSetCredentialsDigestZkCredentialsProvider.java |  9 ++++----
 .../org/apache/solr/client/solrj/SolrClient.java   |  2 ++
 .../org/apache/solr/client/solrj/SolrRequest.java  |  2 +-
 .../solr/client/solrj/WrappedSolrRequest.java      |  2 +-
 .../solr/client/solrj/impl/CloudSolrClient.java    |  2 +-
 .../solrj/request/CollectionAdminRequest.java      |  9 +++++++-
 .../solr/client/solrj/request/RequestWriter.java   |  2 +-
 .../solr/client/solrj/request/SolrQuery.java       |  8 +++++--
 .../solrj/request/beans/CreateShardPayload.java    |  5 ++++
 .../solrj/request/beans/MoveReplicaPayload.java    |  5 ++++
 .../solrj/request/beans/SplitShardPayload.java     |  5 ++++
 .../org/apache/solr/common/cloud/ClusterState.java |  2 +-
 .../solr/common/params/CollectionParams.java       |  8 +++++++
 .../solr/common/params/CommonAdminParams.java      |  8 ++++++-
 .../org/apache/solr/common/util/ContentStream.java |  2 +-
 .../src/java/org/apache/solr/SolrTestCaseJ4.java   | 27 ++++++++++++++++++----
 .../org/apache/solr/embedded/JettySolrRunner.java  |  5 +++-
 .../org/apache/solr/util/SolrJettyTestRule.java    |  8 +++++--
 56 files changed, 209 insertions(+), 77 deletions(-)

diff --git a/AGENTS.md b/AGENTS.md
index 078406dfb74..4410483efeb 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -85,6 +85,16 @@ Solr issues are tracked at https://issues.apache.org/jira 
(project key `SOLR`).
 - Search: `curl 
"https://issues.apache.org/jira/rest/api/2/search?jql=<url-encoded 
JQL>&fields=summary,status,resolution&maxResults=10"` with JQL like 
`project=SOLR AND text~"some phrase" ORDER BY updated DESC`
 - Single issue (with comments): `curl 
"https://issues.apache.org/jira/rest/api/2/issue/SOLR-12345?fields=summary,description,comment"`
 
+## Git Branches and Repository History
+
+- This repo's history predates the Lucene/Solr split: before Solr 9.0, Solr 
was released jointly with Lucene from a combined `lucene-solr` repository. 
Commits and tags from that era are still present here.
+- Release tags come in two families — check both when doing any 
git-blame/version archaeology (e.g. figuring out which Solr version something 
was added or deprecated in), or you will silently get a too-recent answer for 
anything before the split:
+    - `releases/lucene-solr/X.Y.Z` — joint releases, pre-9.0 (Solr versions up 
to 8.x)
+    - `releases/solr/X.Y.Z` — standalone Solr releases, 9.0 onward
+- Exclude `releases/lucene/*` (pure Lucene releases, not Solr), and `grafts/*` 
/ `history/branches/*` refs (historical/graft markers, not real releases) from 
any version lookup.
+- Example pattern to find the earliest release containing a commit: `git tag 
--contains <hash> | grep -E 
'^releases/(solr|lucene-solr)/[0-9]+\.[0-9]+(\.[0-9]+)?$' | sed -E 
's#^releases/(solr|lucene-solr)/##' | sort -V | head -1`
+- The active development branch is `main`; its in-progress version is the 
`baseVersion` string in the root `build.gradle`. Maintenance branches for prior 
lines follow the `branch_9x`, `branch_10x`, etc. naming pattern.
+
 ## Security
 
 For security findings, follow the project's threat model:
diff --git 
a/solr/api/src/java/org/apache/solr/client/api/model/BalanceReplicasRequestBody.java
 
b/solr/api/src/java/org/apache/solr/client/api/model/BalanceReplicasRequestBody.java
index 508e5288cd4..4ebb3a317e2 100644
--- 
a/solr/api/src/java/org/apache/solr/client/api/model/BalanceReplicasRequestBody.java
+++ 
b/solr/api/src/java/org/apache/solr/client/api/model/BalanceReplicasRequestBody.java
@@ -36,6 +36,11 @@ public class BalanceReplicasRequestBody {
   @JsonProperty(value = "nodes")
   public Set<String> nodes;
 
+  /**
+   * @deprecated Solr is moving toward always waiting for final state, with no 
option to opt out;
+   *     once that happens, this parameter will have no effect and will likely 
be removed. See
+   *     SOLR-17712.
+   */
   @Schema(
       description =
           "If true, the request will complete only when all affected replicas 
become active. "
diff --git 
a/solr/api/src/java/org/apache/solr/client/api/model/CreateCollectionRequestBody.java
 
b/solr/api/src/java/org/apache/solr/client/api/model/CreateCollectionRequestBody.java
index 5b49d59d72a..71a54bcc3a0 100644
--- 
a/solr/api/src/java/org/apache/solr/client/api/model/CreateCollectionRequestBody.java
+++ 
b/solr/api/src/java/org/apache/solr/client/api/model/CreateCollectionRequestBody.java
@@ -38,6 +38,11 @@ public class CreateCollectionRequestBody {
 
   @JsonProperty public Integer nrtReplicas;
 
+  /**
+   * @deprecated Solr is moving toward always waiting for final state, with no 
option to opt out;
+   *     once that happens, this parameter will have no effect and will likely 
be removed. See
+   *     SOLR-17712.
+   */
   @JsonProperty
   @Deprecated(since = "9.10")
   public Boolean waitForFinalState;
diff --git 
a/solr/api/src/java/org/apache/solr/client/api/model/CreateReplicaRequestBody.java
 
b/solr/api/src/java/org/apache/solr/client/api/model/CreateReplicaRequestBody.java
index 03e0a3751f2..bd3fedab7a6 100644
--- 
a/solr/api/src/java/org/apache/solr/client/api/model/CreateReplicaRequestBody.java
+++ 
b/solr/api/src/java/org/apache/solr/client/api/model/CreateReplicaRequestBody.java
@@ -31,6 +31,11 @@ public class CreateReplicaRequestBody {
   @JsonProperty public Integer tlogReplicas;
   @JsonProperty public Integer pullReplicas;
 
+  /**
+   * @deprecated Solr is moving toward always waiting for final state, with no 
option to opt out;
+   *     once that happens, this parameter will have no effect and will likely 
be removed. See
+   *     SOLR-17712.
+   */
   @JsonProperty
   @Deprecated(since = "9.10")
   public Boolean waitForFinalState;
diff --git 
a/solr/api/src/java/org/apache/solr/client/api/model/CreateShardRequestBody.java
 
b/solr/api/src/java/org/apache/solr/client/api/model/CreateShardRequestBody.java
index ed73bd5b9a0..b5dae3840dc 100644
--- 
a/solr/api/src/java/org/apache/solr/client/api/model/CreateShardRequestBody.java
+++ 
b/solr/api/src/java/org/apache/solr/client/api/model/CreateShardRequestBody.java
@@ -40,6 +40,11 @@ public class CreateShardRequestBody {
   @JsonProperty("nodeSet")
   public List<String> nodeSet;
 
+  /**
+   * @deprecated Solr is moving toward always waiting for final state, with no 
option to opt out;
+   *     once that happens, this parameter will have no effect and will likely 
be removed. See
+   *     SOLR-17712.
+   */
   @JsonProperty
   @Deprecated(since = "9.10")
   public Boolean waitForFinalState;
diff --git 
a/solr/api/src/java/org/apache/solr/client/api/model/MigrateReplicasRequestBody.java
 
b/solr/api/src/java/org/apache/solr/client/api/model/MigrateReplicasRequestBody.java
index a0a7e3afd9b..9622559cb54 100644
--- 
a/solr/api/src/java/org/apache/solr/client/api/model/MigrateReplicasRequestBody.java
+++ 
b/solr/api/src/java/org/apache/solr/client/api/model/MigrateReplicasRequestBody.java
@@ -42,6 +42,11 @@ public class MigrateReplicasRequestBody {
   @JsonProperty
   public Set<String> targetNodes;
 
+  /**
+   * @deprecated Solr is moving toward always waiting for final state, with no 
option to opt out;
+   *     once that happens, this parameter will have no effect and will likely 
be removed. See
+   *     SOLR-17712.
+   */
   @Schema(
       description =
           "If true, the request will complete only when all affected replicas 
become active. "
diff --git 
a/solr/api/src/java/org/apache/solr/client/api/model/ReplaceNodeRequestBody.java
 
b/solr/api/src/java/org/apache/solr/client/api/model/ReplaceNodeRequestBody.java
index 95f7cb380d2..f3f49a876f8 100644
--- 
a/solr/api/src/java/org/apache/solr/client/api/model/ReplaceNodeRequestBody.java
+++ 
b/solr/api/src/java/org/apache/solr/client/api/model/ReplaceNodeRequestBody.java
@@ -36,6 +36,11 @@ public class ReplaceNodeRequestBody {
   @JsonProperty("targetNodeName")
   public String targetNodeName;
 
+  /**
+   * @deprecated Solr is moving toward always waiting for final state, with no 
option to opt out;
+   *     once that happens, this parameter will have no effect and will likely 
be removed. See
+   *     SOLR-17712.
+   */
   @Schema(
       description =
           "If true, the request will complete only when all affected replicas 
become active. "
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 2cc5f8d9f5c..91871cd0d31 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -707,7 +707,7 @@ public class CoreContainer {
    * @see HttpSolrClient#requestWithBaseUrl(String, SolrRequest, String)
    * @deprecated likely to simply be moved to the ObjectCache so as to not be 
used
    */
-  @Deprecated
+  @Deprecated(since = "10.0")
   public SolrClientCache getSolrClientCache() {
     // TODO put in the objectCache instead
     return solrClientCache;
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 7a5b6995a26..6c636b51902 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -865,7 +865,7 @@ public class SolrCore implements SolrInfoBean, Closeable {
    * @deprecated Use of this method can only lead to race conditions. Try to 
actually obtain a lock
    *     instead.
    */
-  @Deprecated
+  @Deprecated(since = "7.0")
   private static boolean isWriterLocked(Directory directory) throws 
IOException {
     try {
       directory.obtainLock(IndexWriter.WRITE_LOCK_NAME).close();
diff --git a/solr/core/src/java/org/apache/solr/handler/ClusterAPI.java 
b/solr/core/src/java/org/apache/solr/handler/ClusterAPI.java
index 13b2cb8a682..36ee024f7f2 100644
--- a/solr/core/src/java/org/apache/solr/handler/ClusterAPI.java
+++ b/solr/core/src/java/org/apache/solr/handler/ClusterAPI.java
@@ -257,6 +257,10 @@ public class ClusterAPI {
 
   @EndPoint(method = POST, path = "/cluster", permission = COLL_EDIT_PERM)
   public class Commands {
+    /**
+     * @deprecated This API will be removed in Solr 11. Use Node Roles ({@code 
-Dsolr.node.roles})
+     *     at startup instead.
+     */
     @Command(name = "add-role")
     @Deprecated(since = "10.1")
     public void addRole(PayloadObj<RoleInfo> obj) throws Exception {
@@ -266,6 +270,10 @@ public class ClusterAPI {
       collectionsHandler.handleRequestBody(wrapParams(obj.getRequest(), m), 
obj.getResponse());
     }
 
+    /**
+     * @deprecated This API will be removed in Solr 11. Use Node Roles ({@code 
-Dsolr.node.roles})
+     *     at startup instead.
+     */
     @Command(name = "remove-role")
     @Deprecated(since = "10.1")
     public void removeRole(PayloadObj<RoleInfo> obj) throws Exception {
diff --git 
a/solr/core/src/java/org/apache/solr/handler/admin/ClusterStatus.java 
b/solr/core/src/java/org/apache/solr/handler/admin/ClusterStatus.java
index cfd2377ebe6..74b1db62382 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/ClusterStatus.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/ClusterStatus.java
@@ -51,6 +51,10 @@ public class ClusterStatus {
   public static final String LIVENODES_PROP = "liveNodes";
   public static final String CLUSTER_PROP = "clusterProperties";
 
+  /**
+   * @deprecated This API will be removed in Solr 11. Use Node Roles ({@code 
-Dsolr.node.roles}) at
+   *     startup instead.
+   */
   @Deprecated(since = "10.1")
   public static final String ROLES_PROP = "roles";
 
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 4ce80840064..ccbb5b2f8fc 100644
--- a/solr/core/src/java/org/apache/solr/legacy/BBoxStrategy.java
+++ b/solr/core/src/java/org/apache/solr/legacy/BBoxStrategy.java
@@ -72,8 +72,11 @@ import org.locationtech.spatial4j.shape.Shape;
  * org.apache.lucene.index.LeafReader#getNumericDocValues}.
  *
  * @lucene.experimental
+ * @deprecated This class lives in the {@code org.apache.solr.legacy} package, 
which is being
+ *     removed; no replacement has been identified yet for {@link 
org.apache.solr.schema.BBoxField},
+ *     which uses this strategy.
  */
-@Deprecated
+@Deprecated(since = "9.0")
 public class BBoxStrategy extends SpatialStrategy {
 
   // note: we use a FieldType to articulate the options we want on the field.  
We don't use it as-is
@@ -82,7 +85,11 @@ public class BBoxStrategy extends SpatialStrategy {
   /** pointValues, docValues, and nothing else. */
   public static FieldType DEFAULT_FIELDTYPE;
 
-  @Deprecated public static LegacyFieldType LEGACY_FIELDTYPE;
+  /**
+   * @deprecated Use {@link #DEFAULT_FIELDTYPE} instead.
+   */
+  @Deprecated(since = "10.0")
+  public static LegacyFieldType LEGACY_FIELDTYPE;
 
   static {
     // Default: pointValues + docValues
@@ -142,9 +149,10 @@ public class BBoxStrategy extends SpatialStrategy {
    * Creates a new {@link BBoxStrategy} instance that uses {@link 
LegacyDoubleField} for backwards
    * compatibility
    *
-   * @deprecated LegacyNumerics will be removed
+   * @deprecated LegacyNumerics will be removed. Use {@link 
#newInstance(SpatialContext, String)}
+   *     instead.
    */
-  @Deprecated
+  @Deprecated(since = "7.0")
   public static BBoxStrategy newLegacyInstance(SpatialContext ctx, String 
fieldNamePrefix) {
     return new BBoxStrategy(ctx, fieldNamePrefix, LEGACY_FIELDTYPE);
   }
diff --git a/solr/core/src/java/org/apache/solr/legacy/BBoxValueSource.java 
b/solr/core/src/java/org/apache/solr/legacy/BBoxValueSource.java
index b7b794917e4..d955f6c1d45 100644
--- a/solr/core/src/java/org/apache/solr/legacy/BBoxValueSource.java
+++ b/solr/core/src/java/org/apache/solr/legacy/BBoxValueSource.java
@@ -31,8 +31,9 @@ import org.locationtech.spatial4j.shape.Shape;
  * org.apache.lucene.queries.function.FunctionValues#objectVal(int)}.
  *
  * @lucene.internal
+ * @deprecated Internal helper for {@link BBoxStrategy}, which is deprecated.
  */
-@Deprecated
+@Deprecated(since = "9.0")
 class BBoxValueSource extends ShapeValuesSource {
 
   private final BBoxStrategy strategy;
diff --git a/solr/core/src/java/org/apache/solr/legacy/LegacyDoubleField.java 
b/solr/core/src/java/org/apache/solr/legacy/LegacyDoubleField.java
index a40e3a44339..c5e9edd05be 100644
--- a/solr/core/src/java/org/apache/solr/legacy/LegacyDoubleField.java
+++ b/solr/core/src/java/org/apache/solr/legacy/LegacyDoubleField.java
@@ -91,7 +91,7 @@ import org.apache.lucene.index.IndexOptions;
  * @deprecated Please use {@link DoublePoint} instead
  * @since 2.9
  */
-@Deprecated
+@Deprecated(since = "6.0")
 public final class LegacyDoubleField extends LegacyField {
 
   /**
diff --git a/solr/core/src/java/org/apache/solr/legacy/LegacyField.java 
b/solr/core/src/java/org/apache/solr/legacy/LegacyField.java
index fa612425b0f..3fd134fe570 100644
--- a/solr/core/src/java/org/apache/solr/legacy/LegacyField.java
+++ b/solr/core/src/java/org/apache/solr/legacy/LegacyField.java
@@ -26,7 +26,7 @@ import org.apache.lucene.index.IndexOptions;
  *
  * @deprecated Please switch to {@link org.apache.lucene.index.PointValues} 
instead
  */
-@Deprecated
+@Deprecated(since = "7.0")
 public class LegacyField extends Field {
 
   /**
diff --git a/solr/core/src/java/org/apache/solr/legacy/LegacyFieldType.java 
b/solr/core/src/java/org/apache/solr/legacy/LegacyFieldType.java
index c038d804b7a..dfc71d7106d 100644
--- a/solr/core/src/java/org/apache/solr/legacy/LegacyFieldType.java
+++ b/solr/core/src/java/org/apache/solr/legacy/LegacyFieldType.java
@@ -24,7 +24,7 @@ import org.apache.lucene.index.IndexOptions;
  *
  * @deprecated Please switch to {@link org.apache.lucene.index.PointValues} 
instead
  */
-@Deprecated
+@Deprecated(since = "7.0")
 public final class LegacyFieldType extends FieldType {
   private LegacyNumericType numericType;
   private int numericPrecisionStep = LegacyNumericUtils.PRECISION_STEP_DEFAULT;
@@ -47,7 +47,7 @@ public final class LegacyFieldType extends FieldType {
    * @see #numericType()
    * @deprecated Please switch to {@link org.apache.lucene.index.PointValues} 
instead
    */
-  @Deprecated
+  @Deprecated(since = "7.0")
   public void setNumericType(LegacyNumericType type) {
     checkIfFrozen();
     numericType = type;
@@ -62,7 +62,7 @@ public final class LegacyFieldType extends FieldType {
    * @see #setNumericType(LegacyNumericType)
    * @deprecated Please switch to {@link org.apache.lucene.index.PointValues} 
instead
    */
-  @Deprecated
+  @Deprecated(since = "7.0")
   public LegacyNumericType numericType() {
     return numericType;
   }
@@ -76,7 +76,7 @@ public final class LegacyFieldType extends FieldType {
    * @see #numericPrecisionStep()
    * @deprecated Please switch to {@link org.apache.lucene.index.PointValues} 
instead
    */
-  @Deprecated
+  @Deprecated(since = "7.0")
   public void setNumericPrecisionStep(int precisionStep) {
     checkIfFrozen();
     if (precisionStep < 1) {
@@ -95,7 +95,7 @@ public final class LegacyFieldType extends FieldType {
    * @see #setNumericPrecisionStep(int)
    * @deprecated Please switch to {@link org.apache.lucene.index.PointValues} 
instead
    */
-  @Deprecated
+  @Deprecated(since = "7.0")
   public int numericPrecisionStep() {
     return numericPrecisionStep;
   }
diff --git a/solr/core/src/java/org/apache/solr/legacy/LegacyFloatField.java 
b/solr/core/src/java/org/apache/solr/legacy/LegacyFloatField.java
index b1a60beabb1..3d0c5cf8d51 100644
--- a/solr/core/src/java/org/apache/solr/legacy/LegacyFloatField.java
+++ b/solr/core/src/java/org/apache/solr/legacy/LegacyFloatField.java
@@ -91,7 +91,7 @@ import org.apache.lucene.index.IndexOptions;
  * @deprecated Please use {@link FloatPoint} instead
  * @since 2.9
  */
-@Deprecated
+@Deprecated(since = "6.0")
 public final class LegacyFloatField extends LegacyField {
 
   /**
diff --git a/solr/core/src/java/org/apache/solr/legacy/LegacyIntField.java 
b/solr/core/src/java/org/apache/solr/legacy/LegacyIntField.java
index 21ce5f2ca1a..6b79e4bd8b1 100644
--- a/solr/core/src/java/org/apache/solr/legacy/LegacyIntField.java
+++ b/solr/core/src/java/org/apache/solr/legacy/LegacyIntField.java
@@ -91,7 +91,7 @@ import org.apache.lucene.index.IndexOptions;
  * @deprecated Please use {@link IntPoint} instead
  * @since 2.9
  */
-@Deprecated
+@Deprecated(since = "6.0")
 public final class LegacyIntField extends LegacyField {
 
   /**
diff --git a/solr/core/src/java/org/apache/solr/legacy/LegacyLongField.java 
b/solr/core/src/java/org/apache/solr/legacy/LegacyLongField.java
index 6411c2e3d21..0f9bb779451 100644
--- a/solr/core/src/java/org/apache/solr/legacy/LegacyLongField.java
+++ b/solr/core/src/java/org/apache/solr/legacy/LegacyLongField.java
@@ -97,7 +97,7 @@ import org.apache.lucene.index.IndexOptions;
  * @deprecated Please use {@link LongPoint} instead
  * @since 2.9
  */
-@Deprecated
+@Deprecated(since = "6.0")
 public final class LegacyLongField extends LegacyField {
 
   /**
diff --git 
a/solr/core/src/java/org/apache/solr/legacy/LegacyNumericRangeQuery.java 
b/solr/core/src/java/org/apache/solr/legacy/LegacyNumericRangeQuery.java
index a8330510025..4b62f5ac6d3 100644
--- a/solr/core/src/java/org/apache/solr/legacy/LegacyNumericRangeQuery.java
+++ b/solr/core/src/java/org/apache/solr/legacy/LegacyNumericRangeQuery.java
@@ -177,7 +177,7 @@ import org.apache.lucene.util.NumericUtils;
  *     on Points.
  * @since 2.9
  */
-@Deprecated
+@Deprecated(since = "6.0")
 public final class LegacyNumericRangeQuery<T extends Number> extends 
MultiTermQuery {
 
   private LegacyNumericRangeQuery(
diff --git 
a/solr/core/src/java/org/apache/solr/legacy/LegacyNumericTokenStream.java 
b/solr/core/src/java/org/apache/solr/legacy/LegacyNumericTokenStream.java
index 9ac670fce22..03bade9cc54 100644
--- a/solr/core/src/java/org/apache/solr/legacy/LegacyNumericTokenStream.java
+++ b/solr/core/src/java/org/apache/solr/legacy/LegacyNumericTokenStream.java
@@ -81,7 +81,7 @@ import org.apache.lucene.util.NumericUtils;
  * @deprecated Please switch to {@link org.apache.lucene.index.PointValues} 
instead
  * @since 2.9
  */
-@Deprecated
+@Deprecated(since = "6.0")
 public final class LegacyNumericTokenStream extends TokenStream {
 
   /** The full precision token gets this token type assigned. */
diff --git a/solr/core/src/java/org/apache/solr/legacy/LegacyNumericType.java 
b/solr/core/src/java/org/apache/solr/legacy/LegacyNumericType.java
index 2ee66130d2c..3995f498122 100644
--- a/solr/core/src/java/org/apache/solr/legacy/LegacyNumericType.java
+++ b/solr/core/src/java/org/apache/solr/legacy/LegacyNumericType.java
@@ -22,7 +22,7 @@ package org.apache.solr.legacy;
  * @since 3.2
  * @deprecated Please switch to {@link org.apache.lucene.index.PointValues} 
instead
  */
-@Deprecated
+@Deprecated(since = "7.0")
 public enum LegacyNumericType {
   /** 32-bit integer numeric type */
   INT,
diff --git a/solr/core/src/java/org/apache/solr/legacy/LegacyNumericUtils.java 
b/solr/core/src/java/org/apache/solr/legacy/LegacyNumericUtils.java
index 7bfcb04111e..0aa58bab5e4 100644
--- a/solr/core/src/java/org/apache/solr/legacy/LegacyNumericUtils.java
+++ b/solr/core/src/java/org/apache/solr/legacy/LegacyNumericUtils.java
@@ -49,7 +49,7 @@ import org.apache.lucene.util.BytesRefBuilder;
  * @deprecated Please use {@link org.apache.lucene.index.PointValues} instead.
  * @since 2.9, API changed non backwards-compliant in 4.0
  */
-@Deprecated
+@Deprecated(since = "6.0")
 public final class LegacyNumericUtils {
 
   private LegacyNumericUtils() {} // no instance!
diff --git a/solr/core/src/java/org/apache/solr/response/DocsStreamer.java 
b/solr/core/src/java/org/apache/solr/response/DocsStreamer.java
index c90ce1170bb..1f7a2e5ac28 100644
--- a/solr/core/src/java/org/apache/solr/response/DocsStreamer.java
+++ b/solr/core/src/java/org/apache/solr/response/DocsStreamer.java
@@ -72,7 +72,8 @@ public class DocsStreamer implements Iterator<SolrDocument> {
    * @deprecated new field types should not be added to this list, instead use 
{@link
    *     ExternalizeStoredValuesAsObjects}
    */
-  @Deprecated public static final Set<Class<? extends FieldType>> KNOWN_TYPES 
= new HashSet<>();
+  @Deprecated(since = "10.1")
+  public static final Set<Class<? extends FieldType>> KNOWN_TYPES = new 
HashSet<>();
 
   private final ResultContext rctx;
   private final SolrDocumentFetcher docFetcher; // a collaborator of 
SolrIndexSearcher
diff --git a/solr/core/src/java/org/apache/solr/schema/TrieDateField.java 
b/solr/core/src/java/org/apache/solr/schema/TrieDateField.java
index 83ea0fb99ed..15e7c7a1593 100644
--- a/solr/core/src/java/org/apache/solr/schema/TrieDateField.java
+++ b/solr/core/src/java/org/apache/solr/schema/TrieDateField.java
@@ -72,10 +72,9 @@ import org.apache.solr.util.DateMathParser;
  * </blockquote>
  *
  * @see TrieField
- * @deprecated Trie fields are deprecated as of Solr 7.0
- * @see DatePointField
+ * @deprecated Trie fields are deprecated as of Solr 7.0. Use {@link 
DatePointField} instead.
  */
-@Deprecated
+@Deprecated(since = "7.0")
 public class TrieDateField extends TrieField implements DateValueFieldType {
   {
     this.type = NumberType.DATE;
diff --git a/solr/core/src/java/org/apache/solr/schema/TrieDoubleField.java 
b/solr/core/src/java/org/apache/solr/schema/TrieDoubleField.java
index 7d83f0d721c..7fdf0915374 100644
--- a/solr/core/src/java/org/apache/solr/schema/TrieDoubleField.java
+++ b/solr/core/src/java/org/apache/solr/schema/TrieDoubleField.java
@@ -47,10 +47,9 @@ import org.apache.solr.legacy.LegacyNumericUtils;
  * @see Double
  * @see <a 
href="http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.2.3";>Java
  *     Language Specification, s4.2.3</a>
- * @deprecated Trie fields are deprecated as of Solr 7.0
- * @see DoublePointField
+ * @deprecated Trie fields are deprecated as of Solr 7.0. Use {@link 
DoublePointField} instead.
  */
-@Deprecated
+@Deprecated(since = "7.0")
 public class TrieDoubleField extends TrieField implements DoubleValueFieldType 
{
   {
     type = NumberType.DOUBLE;
diff --git a/solr/core/src/java/org/apache/solr/schema/TrieField.java 
b/solr/core/src/java/org/apache/solr/schema/TrieField.java
index 9512176d33d..7c23683d6f7 100644
--- a/solr/core/src/java/org/apache/solr/schema/TrieField.java
+++ b/solr/core/src/java/org/apache/solr/schema/TrieField.java
@@ -84,10 +84,9 @@ import org.slf4j.LoggerFactory;
  *
  * @see org.apache.solr.legacy.LegacyNumericRangeQuery
  * @since solr 1.4
- * @deprecated Trie fields are deprecated as of Solr 7.0
- * @see PointField
+ * @deprecated Trie fields are deprecated as of Solr 7.0. Use {@link 
PointField} instead.
  */
-@Deprecated
+@Deprecated(since = "7.0")
 public class TrieField extends NumericFieldType {
   public static final int DEFAULT_PRECISION_STEP = 8;
 
@@ -720,7 +719,11 @@ public class TrieField extends NumericFieldType {
   }
 }
 
-@Deprecated
+/**
+ * @deprecated Internal helper for {@link TrieDateField}, which is deprecated. 
Use {@link
+ *     DatePointField} instead.
+ */
+@Deprecated(since = "7.0")
 class TrieDateFieldSource extends LongFieldSource {
 
   public TrieDateFieldSource(String field) {
diff --git a/solr/core/src/java/org/apache/solr/schema/TrieFloatField.java 
b/solr/core/src/java/org/apache/solr/schema/TrieFloatField.java
index 5a786c6d58c..8c87c60bc3b 100644
--- a/solr/core/src/java/org/apache/solr/schema/TrieFloatField.java
+++ b/solr/core/src/java/org/apache/solr/schema/TrieFloatField.java
@@ -47,10 +47,9 @@ import org.apache.solr.legacy.LegacyNumericUtils;
  * @see Float
  * @see <a 
href="http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.2.3";>Java
  *     Language Specification, s4.2.3</a>
- * @deprecated Trie fields are deprecated as of Solr 7.0
- * @see FloatPointField
+ * @deprecated Trie fields are deprecated as of Solr 7.0. Use {@link 
FloatPointField} instead.
  */
-@Deprecated
+@Deprecated(since = "7.0")
 public class TrieFloatField extends TrieField implements FloatValueFieldType {
   {
     type = NumberType.FLOAT;
diff --git a/solr/core/src/java/org/apache/solr/schema/TrieIntField.java 
b/solr/core/src/java/org/apache/solr/schema/TrieIntField.java
index c0adef7a4ad..b595eaa99c0 100644
--- a/solr/core/src/java/org/apache/solr/schema/TrieIntField.java
+++ b/solr/core/src/java/org/apache/solr/schema/TrieIntField.java
@@ -41,10 +41,9 @@ import org.apache.solr.legacy.LegacyNumericUtils;
  * </ul>
  *
  * @see Integer
- * @deprecated Trie fields are deprecated as of Solr 7.0
- * @see IntPointField
+ * @deprecated Trie fields are deprecated as of Solr 7.0. Use {@link 
IntPointField} instead.
  */
-@Deprecated
+@Deprecated(since = "7.0")
 public class TrieIntField extends TrieField implements IntValueFieldType {
   {
     type = NumberType.INTEGER;
diff --git a/solr/core/src/java/org/apache/solr/schema/TrieLongField.java 
b/solr/core/src/java/org/apache/solr/schema/TrieLongField.java
index 1d27aac03e2..e9e37b3b8e5 100644
--- a/solr/core/src/java/org/apache/solr/schema/TrieLongField.java
+++ b/solr/core/src/java/org/apache/solr/schema/TrieLongField.java
@@ -41,10 +41,9 @@ import org.apache.solr.legacy.LegacyNumericUtils;
  * </ul>
  *
  * @see Long
- * @deprecated Trie fields are deprecated as of Solr 7.0
- * @see LongPointField
+ * @deprecated Trie fields are deprecated as of Solr 7.0. Use {@link 
LongPointField} instead.
  */
-@Deprecated
+@Deprecated(since = "7.0")
 public class TrieLongField extends TrieField implements LongValueFieldType {
   {
     type = NumberType.LONG;
diff --git 
a/solr/core/src/java/org/apache/solr/search/EarlyTerminatingSortingCollector.java
 
b/solr/core/src/java/org/apache/solr/search/EarlyTerminatingSortingCollector.java
index 4153f197432..aca8c6aa468 100644
--- 
a/solr/core/src/java/org/apache/solr/search/EarlyTerminatingSortingCollector.java
+++ 
b/solr/core/src/java/org/apache/solr/search/EarlyTerminatingSortingCollector.java
@@ -49,7 +49,7 @@ import org.apache.lucene.search.TotalHitCountCollector;
  * @deprecated Use {@link TopFieldCollector} and set trackTotalHits to false.
  * @lucene.experimental
  */
-@Deprecated
+@Deprecated(since = "7.2")
 final class EarlyTerminatingSortingCollector extends FilterCollector {
 
   /**
diff --git 
a/solr/core/src/java/org/apache/solr/search/LegacyNumericRangeQueryBuilder.java 
b/solr/core/src/java/org/apache/solr/search/LegacyNumericRangeQueryBuilder.java
index ce0fc6a005f..0cdbbf77a0c 100644
--- 
a/solr/core/src/java/org/apache/solr/search/LegacyNumericRangeQueryBuilder.java
+++ 
b/solr/core/src/java/org/apache/solr/search/LegacyNumericRangeQueryBuilder.java
@@ -89,7 +89,7 @@ import org.w3c.dom.Element;
  *
  * @deprecated Index with points and use {@link PointRangeQueryBuilder} instead
  */
-@Deprecated
+@Deprecated(since = "7.0")
 public class LegacyNumericRangeQueryBuilder implements QueryBuilder {
 
   @Override
diff --git 
a/solr/core/src/java/org/apache/solr/search/NumericHidingLeafReader.java 
b/solr/core/src/java/org/apache/solr/search/NumericHidingLeafReader.java
index 8b80b87053d..1da96a2647e 100644
--- a/solr/core/src/java/org/apache/solr/search/NumericHidingLeafReader.java
+++ b/solr/core/src/java/org/apache/solr/search/NumericHidingLeafReader.java
@@ -39,7 +39,7 @@ import org.apache.solr.uninverting.UninvertingReader;
  *   <li>doing grouped faceting ({@code group.facet}) on a single-valued 
numeric field.
  * </ul>
  */
-@Deprecated
+@Deprecated(since = "6.0")
 public class NumericHidingLeafReader extends FilterLeafReader {
 
   /**
diff --git a/solr/core/src/java/org/apache/solr/spelling/Token.java 
b/solr/core/src/java/org/apache/solr/spelling/Token.java
index 38441722a29..c163784a8bd 100644
--- a/solr/core/src/java/org/apache/solr/spelling/Token.java
+++ b/solr/core/src/java/org/apache/solr/spelling/Token.java
@@ -53,7 +53,7 @@ import org.apache.lucene.util.BytesRef;
  *       can be reset, clone it again.
  * </ul>
  */
-@Deprecated
+@Deprecated(since = "7.0")
 public class Token extends PackedTokenAttributeImpl implements FlagsAttribute, 
PayloadAttribute {
 
   // TODO Refactor the spellchecker API to use TokenStreams properly, rather 
than this hack
diff --git a/solr/core/src/java/org/apache/solr/uninverting/FieldCache.java 
b/solr/core/src/java/org/apache/solr/uninverting/FieldCache.java
index 93b32320be4..581b136f821 100644
--- a/solr/core/src/java/org/apache/solr/uninverting/FieldCache.java
+++ b/solr/core/src/java/org/apache/solr/uninverting/FieldCache.java
@@ -67,7 +67,7 @@ public interface FieldCache {
      * @throws IOException if an {@link IOException} occurs
      * @deprecated index with Points instead
      */
-    @Deprecated
+    @Deprecated(since = "7.0")
     public TermsEnum termsEnum(Terms terms) throws IOException;
 
     /** Parse's this field's value */
@@ -167,7 +167,7 @@ public interface FieldCache {
    *
    * @deprecated Index with points and use {@link #INT_POINT_PARSER} instead.
    */
-  @Deprecated
+  @Deprecated(since = "7.0")
   public static final Parser LEGACY_INT_PARSER =
       new Parser() {
         @Override
@@ -194,7 +194,7 @@ public interface FieldCache {
    *
    * @deprecated Index with points and use {@link #FLOAT_POINT_PARSER} instead.
    */
-  @Deprecated
+  @Deprecated(since = "7.0")
   public static final Parser LEGACY_FLOAT_PARSER =
       new Parser() {
         @Override
@@ -222,7 +222,7 @@ public interface FieldCache {
    *
    * @deprecated Index with points and use {@link #LONG_POINT_PARSER} instead.
    */
-  @Deprecated
+  @Deprecated(since = "7.0")
   public static final Parser LEGACY_LONG_PARSER =
       new Parser() {
         @Override
@@ -249,7 +249,7 @@ public interface FieldCache {
    *
    * @deprecated Index with points and use {@link #DOUBLE_POINT_PARSER} 
instead.
    */
-  @Deprecated
+  @Deprecated(since = "7.0")
   public static final Parser LEGACY_DOUBLE_PARSER =
       new Parser() {
         @Override
diff --git 
a/solr/core/src/java/org/apache/solr/uninverting/UninvertingReader.java 
b/solr/core/src/java/org/apache/solr/uninverting/UninvertingReader.java
index 5f85aac034e..dcad90587f3 100644
--- a/solr/core/src/java/org/apache/solr/uninverting/UninvertingReader.java
+++ b/solr/core/src/java/org/apache/solr/uninverting/UninvertingReader.java
@@ -85,7 +85,7 @@ public class UninvertingReader extends FilterLeafReader {
      *
      * @deprecated Index with points and use {@link #INTEGER_POINT} instead.
      */
-    @Deprecated
+    @Deprecated(since = "7.0")
     LEGACY_INTEGER,
     /**
      * Single-valued Long, (e.g. indexed with {@link 
org.apache.solr.legacy.LegacyLongField})
@@ -94,7 +94,7 @@ public class UninvertingReader extends FilterLeafReader {
      *
      * @deprecated Index with points and use {@link #LONG_POINT} instead.
      */
-    @Deprecated
+    @Deprecated(since = "7.0")
     LEGACY_LONG,
     /**
      * Single-valued Float, (e.g. indexed with {@link 
org.apache.solr.legacy.LegacyFloatField})
@@ -103,7 +103,7 @@ public class UninvertingReader extends FilterLeafReader {
      *
      * @deprecated Index with points and use {@link #FLOAT_POINT} instead.
      */
-    @Deprecated
+    @Deprecated(since = "7.0")
     LEGACY_FLOAT,
     /**
      * Single-valued Double, (e.g. indexed with {@link 
org.apache.solr.legacy.LegacyDoubleField})
@@ -112,7 +112,7 @@ public class UninvertingReader extends FilterLeafReader {
      *
      * @deprecated Index with points and use {@link #DOUBLE_POINT} instead.
      */
-    @Deprecated
+    @Deprecated(since = "7.0")
     LEGACY_DOUBLE,
     /**
      * Single-valued Binary, (e.g. indexed with {@link StringField})
diff --git 
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/messageprocessor/TestMessageProcessor.java
 
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/messageprocessor/TestMessageProcessor.java
index 769fc58cb29..5303d8f2323 100644
--- 
a/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/messageprocessor/TestMessageProcessor.java
+++ 
b/solr/cross-dc-manager/src/test/org/apache/solr/crossdc/manager/messageprocessor/TestMessageProcessor.java
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.when;
 
 import java.util.Map;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
+import org.apache.solr.client.solrj.impl.ClusterStateProvider;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.client.solrj.response.UpdateResponse;
 import org.apache.solr.common.SolrException;
@@ -72,6 +73,10 @@ public class TestMessageProcessor {
   public void setUp() {
     MockitoAnnotations.initMocks(this);
 
+    // handleItem() probes the cluster through the state provider, so the mock 
must supply one
+    ClusterStateProvider clusterStateProvider = 
Mockito.mock(ClusterStateProvider.class);
+    
when(solrClient.getClusterStateProvider()).thenReturn(clusterStateProvider);
+
     ConsumerMetrics metrics = Mockito.mock(OtelMetrics.class);
     processor = Mockito.spy(new SolrMessageProcessor(metrics, () -> 
solrClient, backoffPolicy));
     Mockito.doNothing().when(processor).uncheckedSleep(anyLong());
diff --git 
a/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/SolrClientCache.java
 
b/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/SolrClientCache.java
index 783b4af6edc..b2e698c3cd3 100644
--- 
a/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/SolrClientCache.java
+++ 
b/solr/solrj-streaming/src/java/org/apache/solr/client/solrj/io/SolrClientCache.java
@@ -79,7 +79,7 @@ public class SolrClientCache implements Closeable {
   /**
    * @deprecated use {@link 
#getCloudSolrClient(CloudSolrClient.CloudSolrClientConnection)}
    */
-  @Deprecated
+  @Deprecated(since = "10.1")
   public CloudSolrClient getCloudSolrClient(String solrConnectionString) {
     var solrConnection = 
CloudSolrClient.CloudSolrClientConnection.parse(solrConnectionString);
     return getCloudSolrClient(solrConnection);
diff --git 
a/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/VMParamsSingleSetCredentialsDigestZkCredentialsProvider.java
 
b/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/VMParamsSingleSetCredentialsDigestZkCredentialsProvider.java
index 05c3d88d199..8d3285db92d 100644
--- 
a/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/VMParamsSingleSetCredentialsDigestZkCredentialsProvider.java
+++ 
b/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/VMParamsSingleSetCredentialsDigestZkCredentialsProvider.java
@@ -20,14 +20,13 @@ import java.util.List;
 import org.apache.curator.framework.AuthInfo;
 
 /**
- * Deprecated in favor of a combination of {@link DigestZkCredentialsProvider} 
and {@link
+ * Current implementation delegates to {@link DigestZkCredentialsProvider} 
with an injected {@link
  * VMParamsZkCredentialsInjector}.
  *
- * <pre>
- * Current implementation delegates to {@link DigestZkCredentialsProvider} 
with an injected {@link VMParamsZkCredentialsInjector}
- * </pre>
+ * @deprecated Use a combination of {@link DigestZkCredentialsProvider} and 
{@link
+ *     VMParamsZkCredentialsInjector} instead.
  */
-@Deprecated
+@Deprecated(since = "10.0")
 public class VMParamsSingleSetCredentialsDigestZkCredentialsProvider
     extends DefaultZkCredentialsProvider {
 
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/SolrClient.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/SolrClient.java
index e83ce93f7a5..5d54d12155a 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/SolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/SolrClient.java
@@ -1198,6 +1198,8 @@ public abstract class SolrClient implements Serializable, 
Closeable {
    * This method defines the context in which this Solr client is being used 
(e.g. for internal
    * communication between Solr nodes or as an external client). The default 
value is {@code
    * SolrClientContext#Client}
+   *
+   * @deprecated No replacement has been designed yet; see SOLR-14720.
    */
   @Deprecated(since = "10.1") // TODO replace or refactor; see SOLR-14720 
related
   public SolrRequest.SolrClientContext getContext() {
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java
index fb975b9bab2..5dc69902c0a 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java
@@ -275,7 +275,7 @@ public abstract class SolrRequest<T> implements 
Serializable {
   /**
    * @deprecated Please use {@link SolrRequest#getContentWriter(String)} 
instead.
    */
-  @Deprecated
+  @Deprecated(since = "7.2")
   public Collection<ContentStream> getContentStreams() throws IOException {
     return null;
   }
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/WrappedSolrRequest.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/WrappedSolrRequest.java
index 4f2ab125122..56d1c018d2b 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/WrappedSolrRequest.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/WrappedSolrRequest.java
@@ -161,7 +161,7 @@ public class WrappedSolrRequest<T> extends SolrRequest<T> {
   }
 
   @Override
-  @Deprecated
+  @Deprecated(since = "10.1")
   public Collection<ContentStream> getContentStreams() throws IOException {
     return wrapped.getContentStreams();
   }
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java
index cb499afca8b..07c8af0c5cd 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java
@@ -198,7 +198,7 @@ public abstract class CloudSolrClient extends SolrClient {
    * @deprecated problematic as a 'get' method, since one implementation will 
do a remote request
    *     each time this is called, potentially return lots of data that isn't 
even needed.
    */
-  @Deprecated
+  @Deprecated(since = "10.1")
   public ClusterState getClusterState() {
     // The future of "ClusterState" isn't clear.  Could make it more of a 
cache instead of a
     // snapshot, so we un-deprecate. Or we avoid it and maybe make the 
ClusterStateProvider as that
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 58533105461..ac7af67427c 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
@@ -165,6 +165,11 @@ public abstract class CollectionAdminRequest<T extends 
CollectionAdminResponse>
       return asyncId;
     }
 
+    /**
+     * @deprecated Solr is moving toward always waiting for final state, with 
no option to opt out;
+     *     once that happens, this parameter will have no effect and will 
likely be removed. See
+     *     SOLR-17712.
+     */
     @Deprecated(since = "9.10")
     public void setWaitForFinalState(boolean waitForFinalState) {
       this.waitForFinalState = waitForFinalState;
@@ -1153,8 +1158,10 @@ public abstract class CollectionAdminRequest<T extends 
CollectionAdminResponse>
      * reason to do so.
      *
      * @param incremental true to use incremental backups, false otherwise.
+     * @deprecated The 'full-snapshot' format is being removed; incremental 
backups are already the
+     *     default, so this method no longer needs to be called.
      */
-    @Deprecated
+    @Deprecated(since = "9.0")
     public Backup setIncremental(boolean incremental) {
       this.incremental = incremental;
       return this;
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/RequestWriter.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/RequestWriter.java
index cca9c544c6a..f57cf2bafd7 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/RequestWriter.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/RequestWriter.java
@@ -54,7 +54,7 @@ public abstract class RequestWriter {
   /**
    * @deprecated Use {@link #getContentWriter(SolrRequest)}.
    */
-  @Deprecated
+  @Deprecated(since = "7.6")
   public abstract Collection<ContentStream> getContentStreams(SolrRequest<?> 
req)
       throws IOException;
 
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrQuery.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrQuery.java
index f07741e996e..07a65724299 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrQuery.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrQuery.java
@@ -1145,13 +1145,17 @@ public class SolrQuery extends ModifiableSolrParams {
    * @deprecated use QueryRequest#QueryRequest(String, SolrParams)
    * @see SolrRequest#setPath(String)
    */
-  @Deprecated
+  @Deprecated(since = "10.0")
   public SolrQuery setRequestHandler(String qt) {
     this.set(CommonParams.QT, qt);
     return this;
   }
 
-  @Deprecated
+  /**
+   * @deprecated use QueryRequest#QueryRequest(String, SolrParams)
+   * @see SolrRequest#getPath()
+   */
+  @Deprecated(since = "10.0")
   public String getRequestHandler() {
     return this.get(CommonParams.QT);
   }
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/beans/CreateShardPayload.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/beans/CreateShardPayload.java
index eaa2cb804ae..6d4182c6063 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/beans/CreateShardPayload.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/beans/CreateShardPayload.java
@@ -34,6 +34,11 @@ public class CreateShardPayload implements ReflectMapWriter {
 
   @JsonProperty public String async;
 
+  /**
+   * @deprecated Solr is moving toward always waiting for final state, with no 
option to opt out;
+   *     once that happens, this parameter will have no effect and will likely 
be removed. See
+   *     SOLR-17712.
+   */
   @JsonProperty
   @Deprecated(since = "9.10")
   public Boolean waitForFinalState;
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/beans/MoveReplicaPayload.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/beans/MoveReplicaPayload.java
index 4c075b12a46..475090e82ad 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/beans/MoveReplicaPayload.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/beans/MoveReplicaPayload.java
@@ -29,6 +29,11 @@ public class MoveReplicaPayload implements ReflectMapWriter {
 
   @JsonProperty public String sourceNode;
 
+  /**
+   * @deprecated Solr is moving toward always waiting for final state, with no 
option to opt out;
+   *     once that happens, this parameter will have no effect and will likely 
be removed. See
+   *     SOLR-17712.
+   */
   @JsonProperty
   @Deprecated(since = "9.10")
   public Boolean waitForFinalState = false;
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/beans/SplitShardPayload.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/beans/SplitShardPayload.java
index 8b7e783e41b..37d98fb2e67 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/beans/SplitShardPayload.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/beans/SplitShardPayload.java
@@ -46,6 +46,11 @@ public class SplitShardPayload implements ReflectMapWriter {
 
   @JsonProperty public String async;
 
+  /**
+   * @deprecated Solr is moving toward always waiting for final state, with no 
option to opt out;
+   *     once that happens, this parameter will have no effect and will likely 
be removed. See
+   *     SOLR-17712.
+   */
   @JsonProperty
   @Deprecated(since = "9.10")
   public Boolean waitForFinalState;
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java 
b/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
index 7064c13e707..40832f59b9d 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
@@ -160,7 +160,7 @@ public class ClusterState implements MapWriter {
     return liveNodes;
   }
 
-  @Deprecated
+  @Deprecated(since = "10.0")
   public Map<String, List<Replica>> getReplicaNamesPerCollectionOnNode(final 
String nodeName) {
     Map<String, List<Replica>> replicaNamesPerCollectionOnNode = new 
HashMap<>();
     collectionStates.values().stream()
diff --git 
a/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java 
b/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java
index 14b85ef94a4..c27c8afebe8 100644
--- a/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java
+++ b/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java
@@ -97,8 +97,16 @@ public interface CollectionParams {
     DELETEREPLICA(true, LockLevel.SHARD),
     FORCELEADER(true, LockLevel.SHARD),
     MIGRATE(true, LockLevel.COLLECTION),
+    /**
+     * @deprecated This API will be removed in Solr 11. Use Node Roles ({@code 
-Dsolr.node.roles})
+     *     at startup instead.
+     */
     @Deprecated(since = "10.1")
     ADDROLE(true, LockLevel.NONE),
+    /**
+     * @deprecated This API will be removed in Solr 11. Use Node Roles ({@code 
-Dsolr.node.roles})
+     *     at startup instead.
+     */
     @Deprecated(since = "10.1")
     REMOVEROLE(true, LockLevel.NONE),
     CLUSTERPROP(true, LockLevel.NONE),
diff --git 
a/solr/solrj/src/java/org/apache/solr/common/params/CommonAdminParams.java 
b/solr/solrj/src/java/org/apache/solr/common/params/CommonAdminParams.java
index b77516daf08..b55162d01cd 100644
--- a/solr/solrj/src/java/org/apache/solr/common/params/CommonAdminParams.java
+++ b/solr/solrj/src/java/org/apache/solr/common/params/CommonAdminParams.java
@@ -21,7 +21,13 @@ public interface CommonAdminParams {
   /** Async or not? * */
   String ASYNC = "async";
 
-  /** Wait for final state of the operation. */
+  /**
+   * Wait for final state of the operation.
+   *
+   * @deprecated Solr is moving toward always waiting for final state, with no 
option to opt out;
+   *     once that happens, this parameter will have no effect and will likely 
be removed. See
+   *     SOLR-17712.
+   */
   @Deprecated(since = "9.10")
   String WAIT_FOR_FINAL_STATE = "waitForFinalState";
 
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/ContentStream.java 
b/solr/solrj/src/java/org/apache/solr/common/util/ContentStream.java
index 7c1de75568e..dcf475327ab 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/ContentStream.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/ContentStream.java
@@ -25,7 +25,7 @@ import 
org.apache.solr.client.solrj.request.RequestWriter.ContentWriter;
  * @since solr 1.2
  * @deprecated Use {@link ContentWriter} instead.
  */
-@Deprecated
+@Deprecated(since = "10.0")
 public interface ContentStream {
   String getName();
 
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 a280f1d8a6b..295f595bf1c 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
@@ -2254,7 +2254,11 @@ public abstract class SolrTestCaseJ4 extends 
SolrTestCase {
   // and copies the stock files in there.
 
   /** Copies the test collection1 config into {@code dstRoot}/{@code 
collection}/conf */
-  @Deprecated // Instead use a basic config + whatever is needed or default 
config
+  /**
+   * @deprecated Use a basic config plus whatever is needed, or the default 
config, instead of
+   *     copying the full collection1 test config.
+   */
+  @Deprecated(since = "10.0") // Instead use a basic config + whatever is 
needed or default config
   public static void copySolrHomeToTemp(Path dstRoot, String collection) 
throws IOException {
     Path subHome = dstRoot.resolve(collection).resolve("conf");
     Files.createDirectories(subHome);
@@ -2527,13 +2531,23 @@ public abstract class SolrTestCaseJ4 extends 
SolrTestCase {
    *
    * @param url the base URL for a Solr node. Should not contain a core or 
collection name.
    */
-  @Deprecated // probably use an existing client like on a testRule/jettyRunner
+  /**
+   * @deprecated Prefer an existing client, e.g. from a {@link
+   *     org.apache.solr.util.SolrClientTestRule} or {@link
+   *     org.apache.solr.embedded.JettySolrRunner#getSolrClient()}.
+   */
+  @Deprecated(since = "10.1") // probably use an existing client like on a 
testRule/jettyRunner
   public static HttpJettySolrClient getHttpSolrClient(String url) {
     return new HttpJettySolrClient.Builder(url).build();
   }
 
   /** Create a basic HttpSolrClient pointed at the specified replica */
-  @Deprecated // probably use an existing client like on a testRule/jettyRunner
+  /**
+   * @deprecated Prefer an existing client, e.g. from a {@link
+   *     org.apache.solr.util.SolrClientTestRule} or {@link
+   *     org.apache.solr.embedded.JettySolrRunner#getSolrClient()}.
+   */
+  @Deprecated(since = "10.1") // probably use an existing client like on a 
testRule/jettyRunner
   public static HttpJettySolrClient getHttpSolrClient(Replica replica) {
     return getHttpSolrClient(replica.getBaseUrl(), replica.getCoreName());
   }
@@ -2547,7 +2561,12 @@ public abstract class SolrTestCaseJ4 extends 
SolrTestCase {
    * @param defaultCoreName the name of a core that the created client should 
default to when making
    *     core-aware requests
    */
-  @Deprecated // probably use an existing client like on a testRule/jettyRunner
+  /**
+   * @deprecated Prefer an existing client, e.g. from a {@link
+   *     org.apache.solr.util.SolrClientTestRule} or {@link
+   *     org.apache.solr.embedded.JettySolrRunner#getSolrClient()}.
+   */
+  @Deprecated(since = "10.1") // probably use an existing client like on a 
testRule/jettyRunner
   public static HttpJettySolrClient getHttpSolrClient(String url, String 
defaultCoreName) {
     return new 
HttpJettySolrClient.Builder(url).withDefaultCollection(defaultCoreName).build();
   }
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 0a0f8554da0..bd97bf8c690 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
@@ -785,7 +785,10 @@ public class JettySolrRunner implements SolrBackend {
     }
   }
 
-  @Deprecated
+  /**
+   * @deprecated Use {@link #getSolrClient()} or {@link #newClient(int, int)} 
instead.
+   */
+  @Deprecated(since = "10.1")
   public HttpJettySolrClient newClient() {
     return new HttpJettySolrClient.Builder(getBaseUrl().toString()).build();
   }
diff --git 
a/solr/test-framework/src/java/org/apache/solr/util/SolrJettyTestRule.java 
b/solr/test-framework/src/java/org/apache/solr/util/SolrJettyTestRule.java
index 0640c02bcd1..2d0502aebcf 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/SolrJettyTestRule.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/SolrJettyTestRule.java
@@ -53,8 +53,12 @@ public class SolrJettyTestRule extends SolrClientTestRule {
     super.after(); // closes the backend (JettySolrRunner)
   }
 
-  /** Resets the state. DEPRECATED; please don't call! */
-  @Deprecated
+  /**
+   * Resets the state.
+   *
+   * @deprecated Please don't call! There is no replacement API.
+   */
+  @Deprecated(since = "10.0")
   public void reset() {
     after();
   }

Reply via email to