You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by GitBox <gi...@apache.org> on 2018/12/15 00:34:17 UTC

[GitHub] aahmed-se closed pull request #2957: Add Connect and Read timeout to pulsar admin

aahmed-se closed pull request #2957: Add Connect and Read timeout to pulsar admin
URL: https://github.com/apache/pulsar/pull/2957
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

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 0953d22cc2..e986c25f69 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
@@ -18,17 +18,6 @@
  */
 package org.apache.pulsar.client.admin;
 
-import java.io.Closeable;
-import java.io.IOException;
-import java.net.URL;
-import java.security.cert.X509Certificate;
-import java.util.Map;
-
-import javax.net.ssl.SSLContext;
-import javax.ws.rs.client.Client;
-import javax.ws.rs.client.ClientBuilder;
-import javax.ws.rs.client.WebTarget;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.http.conn.ssl.DefaultHostnameVerifier;
 import org.apache.http.conn.ssl.NoopHostnameVerifier;
@@ -49,6 +38,17 @@
 import org.slf4j.LoggerFactory;
 import org.slf4j.bridge.SLF4JBridgeHandler;
 
+import javax.net.ssl.SSLContext;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.WebTarget;
+import java.io.Closeable;
+import java.io.IOException;
+import java.net.URL;
+import java.security.cert.X509Certificate;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
 /**
  * Pulsar client admin API client.
  */
@@ -56,6 +56,9 @@
 public class PulsarAdmin implements Closeable {
     private static final Logger LOG = LoggerFactory.getLogger(PulsarAdmin.class);
 
+    public static final int DEFAULT_CONNECT_TIMEOUT_SECONDS = 60;
+    public static final int DEFAULT_READ_TIMEOUT_SECONDS = 60;
+
     private final Clusters clusters;
     private final Brokers brokers;
     private final BrokerStats brokerStats;
@@ -77,6 +80,10 @@
     private final Schemas schemas;
     protected final WebTarget root;
     protected final Authentication auth;
+    private final int connectTimeout;
+    private final TimeUnit connectTimeoutUnit;
+    private final int readTimeout;
+    private final TimeUnit readTimeoutUnit;
 
     static {
         /**
@@ -103,7 +110,23 @@ public static PulsarAdminBuilder builder() {
         return new PulsarAdminBuilderImpl();
     }
 
+
     public PulsarAdmin(String serviceUrl, ClientConfigurationData clientConfigData) throws PulsarClientException {
+        this(serviceUrl, clientConfigData, DEFAULT_CONNECT_TIMEOUT_SECONDS, TimeUnit.SECONDS,
+                DEFAULT_READ_TIMEOUT_SECONDS, TimeUnit.SECONDS);
+
+    }
+
+    public PulsarAdmin(String serviceUrl,
+                       ClientConfigurationData clientConfigData,
+                       int connectTimeout,
+                       TimeUnit connectTimeoutUnit,
+                       int readTimeout,
+                       TimeUnit readTimeoutUnit) throws PulsarClientException {
+        this.connectTimeout = connectTimeout;
+        this.connectTimeoutUnit = connectTimeoutUnit;
+        this.readTimeout = readTimeout;
+        this.readTimeoutUnit = readTimeoutUnit;
         this.clientConfigData = clientConfigData;
         this.auth = clientConfigData != null ? clientConfigData.getAuthentication() : new AuthenticationDisabled();
         LOG.debug("created: serviceUrl={}, authMethodName={}", serviceUrl,
@@ -118,7 +141,10 @@ public PulsarAdmin(String serviceUrl, ClientConfigurationData clientConfigData)
         httpConfig.property(ClientProperties.ASYNC_THREADPOOL_SIZE, 8);
         httpConfig.register(MultiPartFeature.class);
 
-        ClientBuilder clientBuilder = ClientBuilder.newBuilder().withConfig(httpConfig)
+        ClientBuilder clientBuilder = ClientBuilder.newBuilder()
+                .withConfig(httpConfig)
+                .connectTimeout(this.connectTimeout, this.connectTimeoutUnit)
+                .readTimeout(this.readTimeout, this.readTimeoutUnit)
                 .register(JacksonConfigurator.class).register(JacksonFeature.class);
 
         boolean useTls = false;
@@ -164,7 +190,7 @@ public PulsarAdmin(String serviceUrl, ClientConfigurationData clientConfigData)
         this.client = clientBuilder.build();
 
         this.serviceUrl = serviceUrl;
-        root = client.target(serviceUrl.toString());
+        root = client.target(serviceUrl);
 
         this.clusters = new ClustersImpl(root, auth);
         this.brokers = new BrokersImpl(root, auth);
@@ -413,4 +439,5 @@ public void close() {
         }
         client.close();
     }
+
 }
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 3951e1ae04..a3826f9e6a 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
@@ -19,6 +19,7 @@
 package org.apache.pulsar.client.admin;
 
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.pulsar.client.api.Authentication;
 import org.apache.pulsar.client.api.PulsarClientException;
@@ -169,4 +170,21 @@ PulsarAdminBuilder authentication(String authPluginClassName, Map<String, String
      * @param enableTlsHostnameVerification
      */
     PulsarAdminBuilder enableTlsHostnameVerification(boolean enableTlsHostnameVerification);
+
+    /**
+     * This sets the connection time out for the pulsar admin client
+     *
+     * @param connectionTimeout
+     * @param connectionTimeoutUnit
+     */
+    PulsarAdminBuilder connectionTimeout(int connectionTimeout, TimeUnit connectionTimeoutUnit);
+
+    /**
+     * This sets the server response read time out for the pulsar admin client for any request.
+     *
+     * @param readTimeout
+     * @param readTimeoutUnit
+     */
+    PulsarAdminBuilder readTimeout(int readTimeout, TimeUnit readTimeoutUnit);
+
 }
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 68b9df93c6..978d0d1ba4 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
@@ -18,8 +18,6 @@
  */
 package org.apache.pulsar.client.admin.internal;
 
-import java.util.Map;
-
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.admin.PulsarAdminBuilder;
 import org.apache.pulsar.client.api.Authentication;
@@ -28,13 +26,21 @@
 import org.apache.pulsar.client.api.PulsarClientException.UnsupportedAuthenticationException;
 import org.apache.pulsar.client.impl.conf.ClientConfigurationData;
 
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
 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 TimeUnit connectTimeoutUnit = TimeUnit.SECONDS;
+    private TimeUnit readTimeoutUnit = TimeUnit.SECONDS;
 
     @Override
     public PulsarAdmin build() throws PulsarClientException {
-        return new PulsarAdmin(conf.getServiceUrl(), conf);
+        return new PulsarAdmin(conf.getServiceUrl(),
+                conf, connectTimeout, connectTimeoutUnit, readTimeout, readTimeoutUnit);
     }
 
     public PulsarAdminBuilderImpl() {
@@ -93,4 +99,18 @@ public PulsarAdminBuilder enableTlsHostnameVerification(boolean enableTlsHostnam
         conf.setTlsHostnameVerificationEnable(enableTlsHostnameVerification);
         return this;
     }
+
+    @Override
+    public PulsarAdminBuilder connectionTimeout(int connectionTimeout, TimeUnit connectionTimeoutUnit) {
+        this.connectTimeout = connectionTimeout;
+        this.connectTimeoutUnit = connectionTimeoutUnit;
+        return this;
+    }
+
+    @Override
+    public PulsarAdminBuilder readTimeout(int readTimeout, TimeUnit readTimeoutUnit) {
+        this.readTimeout = readTimeout;
+        this.readTimeoutUnit = readTimeoutUnit;
+        return this;
+    }
 }
diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/conf/ClientConfigurationData.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/conf/ClientConfigurationData.java
index f7bec63c5a..47387187a9 100644
--- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/conf/ClientConfigurationData.java
+++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/conf/ClientConfigurationData.java
@@ -58,7 +58,6 @@
     private int maxLookupRequest = 50000;
     private int maxNumberOfRejectedRequestPerConnection = 50;
     private int keepAliveIntervalSeconds = 30;
-    private int connectionTimeoutMs = 10000;
 
     public ClientConfigurationData clone() {
         try {


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services