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

sanjeevrk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 5a2b10b  Allow configurble Request timeout for pulsar cli (#4235)
5a2b10b is described below

commit 5a2b10bbb2c96b472bd2ebf4ebbb1eb7c88926e6
Author: Sanjeev Kulkarni <sanjee...@gmail.com>
AuthorDate: Wed May 8 19:59:55 2019 -0700

    Allow configurble Request timeout for pulsar cli (#4235)
---
 .../org/apache/pulsar/client/admin/PulsarAdmin.java     | 17 +++++++++++++----
 .../apache/pulsar/client/admin/PulsarAdminBuilder.java  |  8 ++++++++
 .../client/admin/internal/PulsarAdminBuilderImpl.java   | 12 +++++++++++-
 .../client/admin/internal/http/AsyncHttpConnector.java  |  6 +++++-
 .../admin/internal/http/AsyncHttpConnectorProvider.java |  4 ++--
 5 files changed, 39 insertions(+), 8 deletions(-)

diff --git 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/PulsarAdmin.java
 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/PulsarAdmin.java
index d8357b3..9ab3d6d 100644
--- 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/PulsarAdmin.java
+++ 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/PulsarAdmin.java
@@ -69,6 +69,7 @@ public class PulsarAdmin implements Closeable {
 
     public static final int DEFAULT_CONNECT_TIMEOUT_SECONDS = 60;
     public static final int DEFAULT_READ_TIMEOUT_SECONDS = 60;
+    public static final int DEFAULT_REQUEST_TIMEOUT_SECONDS = 300;
 
     private final Clusters clusters;
     private final Brokers brokers;
@@ -96,6 +97,8 @@ public class PulsarAdmin implements Closeable {
     private final TimeUnit connectTimeoutUnit;
     private final int readTimeout;
     private final TimeUnit readTimeoutUnit;
+    private final int requestTimeout;
+    private final TimeUnit requestTimeoutUnit;
 
     static {
         /**
@@ -125,7 +128,8 @@ public class PulsarAdmin implements Closeable {
 
     public PulsarAdmin(String serviceUrl, ClientConfigurationData 
clientConfigData) throws PulsarClientException {
         this(serviceUrl, clientConfigData, DEFAULT_CONNECT_TIMEOUT_SECONDS, 
TimeUnit.SECONDS,
-                DEFAULT_READ_TIMEOUT_SECONDS, TimeUnit.SECONDS);
+                DEFAULT_READ_TIMEOUT_SECONDS, TimeUnit.SECONDS,
+                DEFAULT_REQUEST_TIMEOUT_SECONDS, TimeUnit.SECONDS);
 
     }
 
@@ -134,11 +138,15 @@ public class PulsarAdmin implements Closeable {
                        int connectTimeout,
                        TimeUnit connectTimeoutUnit,
                        int readTimeout,
-                       TimeUnit readTimeoutUnit) throws PulsarClientException {
+                       TimeUnit readTimeoutUnit,
+                       int requestTimeout,
+                       TimeUnit requestTimeoutUnit) throws 
PulsarClientException {
         this.connectTimeout = connectTimeout;
         this.connectTimeoutUnit = connectTimeoutUnit;
         this.readTimeout = readTimeout;
         this.readTimeoutUnit = readTimeoutUnit;
+        this.requestTimeout = requestTimeout;
+        this.requestTimeoutUnit = requestTimeoutUnit;
         this.clientConfigData = clientConfigData;
         this.auth = clientConfigData != null ? 
clientConfigData.getAuthentication() : new AuthenticationDisabled();
         LOG.debug("created: serviceUrl={}, authMethodName={}", serviceUrl,
@@ -170,8 +178,9 @@ public class PulsarAdmin implements Closeable {
         root = client.target(serviceUrl);
 
         this.httpAsyncClient = asyncConnectorProvider.getConnector(
-                
Math.toIntExact(TimeUnit.SECONDS.toMillis(this.connectTimeout)),
-                
Math.toIntExact(TimeUnit.SECONDS.toMillis(this.readTimeout))).getHttpClient();
+                
Math.toIntExact(connectTimeoutUnit.toMillis(this.connectTimeout)),
+                Math.toIntExact(readTimeoutUnit.toMillis(this.readTimeout)),
+                
Math.toIntExact(requestTimeoutUnit.toMillis(this.requestTimeout))).getHttpClient();
 
         this.clusters = new ClustersImpl(root, auth);
         this.brokers = new BrokersImpl(root, auth);
diff --git 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/PulsarAdminBuilder.java
 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/PulsarAdminBuilder.java
index a3826f9..e4e04af 100644
--- 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/PulsarAdminBuilder.java
+++ 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/PulsarAdminBuilder.java
@@ -187,4 +187,12 @@ public interface PulsarAdminBuilder {
      */
     PulsarAdminBuilder readTimeout(int readTimeout, TimeUnit readTimeoutUnit);
 
+    /**
+     * This sets the server request time out for the pulsar admin client for 
any request.
+     *
+     * @param requestTimeout
+     * @param requestTimeoutUnit
+     */
+    PulsarAdminBuilder requestTimeout(int requestTimeout, TimeUnit 
requestTimeoutUnit);
+
 }
diff --git 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PulsarAdminBuilderImpl.java
 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PulsarAdminBuilderImpl.java
index 978d0d1..bb5588b 100644
--- 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PulsarAdminBuilderImpl.java
+++ 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/PulsarAdminBuilderImpl.java
@@ -34,13 +34,16 @@ public class PulsarAdminBuilderImpl implements 
PulsarAdminBuilder {
     protected final ClientConfigurationData conf;
     private int connectTimeout = PulsarAdmin.DEFAULT_CONNECT_TIMEOUT_SECONDS;
     private int readTimeout = PulsarAdmin.DEFAULT_READ_TIMEOUT_SECONDS;
+    private int requestTimeout = PulsarAdmin.DEFAULT_REQUEST_TIMEOUT_SECONDS;
     private TimeUnit connectTimeoutUnit = TimeUnit.SECONDS;
     private TimeUnit readTimeoutUnit = TimeUnit.SECONDS;
+    private TimeUnit requestTimeoutUnit = TimeUnit.SECONDS;
 
     @Override
     public PulsarAdmin build() throws PulsarClientException {
         return new PulsarAdmin(conf.getServiceUrl(),
-                conf, connectTimeout, connectTimeoutUnit, readTimeout, 
readTimeoutUnit);
+                conf, connectTimeout, connectTimeoutUnit, readTimeout, 
readTimeoutUnit,
+                requestTimeout, requestTimeoutUnit);
     }
 
     public PulsarAdminBuilderImpl() {
@@ -113,4 +116,11 @@ public class PulsarAdminBuilderImpl implements 
PulsarAdminBuilder {
         this.readTimeoutUnit = readTimeoutUnit;
         return this;
     }
+
+    @Override
+    public PulsarAdminBuilder requestTimeout(int requestTimeout, TimeUnit 
requestTimeoutUnit) {
+        this.requestTimeout = requestTimeout;
+        this.requestTimeoutUnit = requestTimeoutUnit;
+        return this;
+    }
 }
diff --git 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/http/AsyncHttpConnector.java
 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/http/AsyncHttpConnector.java
index dfb2ecc..6c1b16a 100644
--- 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/http/AsyncHttpConnector.java
+++ 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/http/AsyncHttpConnector.java
@@ -40,6 +40,7 @@ import lombok.extern.slf4j.Slf4j;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.pulsar.PulsarVersion;
+import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.api.AuthenticationDataProvider;
 import org.apache.pulsar.client.impl.conf.ClientConfigurationData;
 import org.apache.pulsar.common.util.SecurityUtility;
@@ -66,16 +67,19 @@ public class AsyncHttpConnector implements Connector {
     public AsyncHttpConnector(Client client, ClientConfigurationData conf) {
         this((int) 
client.getConfiguration().getProperty(ClientProperties.CONNECT_TIMEOUT),
                 (int) 
client.getConfiguration().getProperty(ClientProperties.READ_TIMEOUT),
+                PulsarAdmin.DEFAULT_REQUEST_TIMEOUT_SECONDS * 1000,
                 conf);
     }
 
     @SneakyThrows
-    public AsyncHttpConnector(int connectTimeoutMs, int readTimeoutMs, 
ClientConfigurationData conf) {
+    public AsyncHttpConnector(int connectTimeoutMs, int readTimeoutMs,
+                              int requestTimeoutMs, ClientConfigurationData 
conf) {
         DefaultAsyncHttpClientConfig.Builder confBuilder = new 
DefaultAsyncHttpClientConfig.Builder();
         confBuilder.setFollowRedirect(true);
         confBuilder.setConnectTimeout(connectTimeoutMs);
         confBuilder.setReadTimeout(readTimeoutMs);
         confBuilder.setUserAgent(String.format("Pulsar-Java-v%s", 
PulsarVersion.getVersion()));
+        confBuilder.setRequestTimeout(requestTimeoutMs);
         confBuilder.setKeepAliveStrategy(new DefaultKeepAliveStrategy() {
             @Override
             public boolean keepAlive(Request ahcRequest, HttpRequest request, 
HttpResponse response) {
diff --git 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/http/AsyncHttpConnectorProvider.java
 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/http/AsyncHttpConnectorProvider.java
index 1bddfe1..3ea4757 100644
--- 
a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/http/AsyncHttpConnectorProvider.java
+++ 
b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/http/AsyncHttpConnectorProvider.java
@@ -39,7 +39,7 @@ public class AsyncHttpConnectorProvider implements 
ConnectorProvider {
     }
 
 
-    public AsyncHttpConnector getConnector(int connectTimeoutMs, int 
readTimeoutMs) {
-        return new AsyncHttpConnector(connectTimeoutMs, readTimeoutMs, conf);
+    public AsyncHttpConnector getConnector(int connectTimeoutMs, int 
readTimeoutMs, int requestTimeoutMs) {
+        return new AsyncHttpConnector(connectTimeoutMs, readTimeoutMs, 
requestTimeoutMs, conf);
     }
 }

Reply via email to