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); } }