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 e7cac796d20 SOLR-10463: setRetryExpiryTime should be deprecated in
favor of Solr Client Builder methods (#1220)
e7cac796d20 is described below
commit e7cac796d20727595527d68630dd04ddd15722d2
Author: Eric Pugh <[email protected]>
AuthorDate: Thu Dec 22 12:01:26 2022 -0500
SOLR-10463: setRetryExpiryTime should be deprecated in favor of Solr Client
Builder methods (#1220)
Deprecated original method on clients, and added to builders.
---
solr/CHANGES.txt | 3 +++
.../apache/solr/client/solrj/impl/CloudHttp2SolrClient.java | 12 ++++++++++++
.../apache/solr/client/solrj/impl/CloudLegacySolrClient.java | 4 ++++
.../org/apache/solr/client/solrj/impl/CloudSolrClient.java | 5 ++++-
4 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index cd3fa37bddb..709c6dba3d5 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -90,6 +90,9 @@ Improvements
* SOLR-16438: Support optional split.setPreferredLeaders prop in shard split
command. (Bruno Roustant)
+* SOLR-10463: Introduce Builder setter for retryExpiryTime on cloud
SolrClients. Deprecated
+ direct setter setRetryExpiryTime on cloud SolrClients. (Eric Pugh)
+
Optimizations
---------------------
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudHttp2SolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudHttp2SolrClient.java
index 49200f4ce2f..4692eede98c 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudHttp2SolrClient.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudHttp2SolrClient.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
+import java.util.concurrent.TimeUnit;
import org.apache.solr.client.solrj.ResponseParser;
import org.apache.solr.client.solrj.request.RequestWriter;
import org.apache.solr.client.solrj.request.UpdateRequest;
@@ -64,6 +65,7 @@ public class CloudHttp2SolrClient extends CloudSolrClient {
this.clientIsInternal = false;
this.myClient = builder.httpClient;
}
+ this.retryExpiryTime = builder.retryExpiryTime;
if (builder.requestWriter != null) {
this.myClient.requestWriter = builder.requestWriter;
}
@@ -143,6 +145,8 @@ public class CloudHttp2SolrClient extends CloudSolrClient {
protected Http2SolrClient.Builder internalClientBuilder;
private RequestWriter requestWriter;
private ResponseParser responseParser;
+ private long retryExpiryTime =
+ TimeUnit.NANOSECONDS.convert(3, TimeUnit.SECONDS); // 3 seconds or 3
million nanos
/**
* Provide a series of Solr URLs to be used when configuring {@link
CloudHttp2SolrClient}
@@ -245,6 +249,14 @@ public class CloudHttp2SolrClient extends CloudSolrClient {
return this;
}
+ /**
+ * This is the time to wait to refetch the state after getting the same
state version from ZK
+ */
+ public Builder setRetryExpiryTime(int secs) {
+ this.retryExpiryTime = TimeUnit.NANOSECONDS.convert(secs,
TimeUnit.SECONDS);
+ return this;
+ }
+
public Builder withHttpClient(Http2SolrClient httpClient) {
if (this.internalClientBuilder != null) {
throw new IllegalStateException(
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudLegacySolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudLegacySolrClient.java
index 58da3d71d3f..1bdd0636e77 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudLegacySolrClient.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudLegacySolrClient.java
@@ -22,6 +22,7 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.concurrent.TimeUnit;
import org.apache.http.NoHttpResponseException;
import org.apache.http.client.HttpClient;
import org.apache.http.conn.ConnectTimeoutException;
@@ -85,6 +86,7 @@ public class CloudLegacySolrClient extends CloudSolrClient {
} else {
this.stateProvider = builder.stateProvider;
}
+ this.retryExpiryTime = builder.retryExpiryTime;
this.clientIsInternal = builder.httpClient == null;
this.shutdownLBHttpSolrServer = builder.loadBalancedSolrClient == null;
if (builder.lbClientBuilder != null) {
@@ -194,6 +196,8 @@ public class CloudLegacySolrClient extends CloudSolrClient {
protected boolean shardLeadersOnly = true;
protected boolean directUpdatesToLeadersOnly = false;
protected boolean parallelUpdates = true;
+ protected long retryExpiryTime =
+ TimeUnit.NANOSECONDS.convert(3, TimeUnit.SECONDS); // 3 seconds or 3
million nanos
protected ClusterStateProvider stateProvider;
/** Constructor for use by subclasses. This constructor was public prior
to version 9.0 */
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 b435ef72233..ea997a62158 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
@@ -105,7 +105,7 @@ public abstract class CloudSolrClient extends SolrClient {
new SolrNamedThreadFactory("CloudSolrClient ThreadPool"));
public static final String STATE_VERSION = "_stateVer_";
- private long retryExpiryTime =
+ protected long retryExpiryTime =
TimeUnit.NANOSECONDS.convert(3, TimeUnit.SECONDS); // 3 seconds or 3
million nanos
private final Set<String> NON_ROUTABLE_PARAMS;
@@ -231,7 +231,10 @@ public abstract class CloudSolrClient extends SolrClient {
* This is the time to wait to refetch the state after getting the same
state version from ZK
*
* <p>secs
+ *
+ * @deprecated use {@link CloudSolrClient.Builder#setRetryExpiryTime(int)}
instead
*/
+ @Deprecated
public void setRetryExpiryTime(int secs) {
this.retryExpiryTime = TimeUnit.NANOSECONDS.convert(secs,
TimeUnit.SECONDS);
}