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

penghui 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 c1f06ca  support config request timeout (#7698)
c1f06ca is described below

commit c1f06caba3938281349b2b5a535e131ec35f03dd
Author: ltamber <[email protected]>
AuthorDate: Mon Aug 3 22:14:43 2020 +0800

    support config request timeout (#7698)
    
    ### Motivation
     Currently, pulsar admin cli tool request timeout is 300 seconds, this pr 
is to make it configurable.
    
    ### Modifications
    add option `request-timeout` to config pulsar admin cli tool request 
timeout, default is 300 seconds.
    add unit test.
---
 .../pulsar/admin/cli/PulsarAdminToolTest.java      | 28 ++++++++++++++++++++++
 .../apache/pulsar/admin/cli/PulsarAdminTool.java   |  6 +++++
 2 files changed, 34 insertions(+)

diff --git 
a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
 
b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
index 18f0d39..a46ee7c 100644
--- 
a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
+++ 
b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/admin/cli/PulsarAdminToolTest.java
@@ -875,6 +875,34 @@ public class PulsarAdminToolTest {
     }
 
     @Test
+    public void requestTimeout() throws Exception {
+        Properties properties = new Properties();
+        properties.put("webServiceUrl", "http://localhost:2181";);
+        PulsarAdminTool tool = new PulsarAdminTool(properties);
+
+        try {
+            tool.run("--request-timeout 1".split(" "));
+        } catch (Exception e) {
+            //Ok
+        }
+
+        Field adminBuilderField = 
PulsarAdminTool.class.getDeclaredField("adminBuilder");
+        adminBuilderField.setAccessible(true);
+        PulsarAdminBuilderImpl builder = (PulsarAdminBuilderImpl) 
adminBuilderField.get(tool);
+        Field requestTimeoutField =
+                
PulsarAdminBuilderImpl.class.getDeclaredField("requestTimeout");
+        requestTimeoutField.setAccessible(true);
+        int requestTimeout = (int) requestTimeoutField.get(builder);
+
+        Field requestTimeoutUnitField =
+                
PulsarAdminBuilderImpl.class.getDeclaredField("requestTimeoutUnit");
+        requestTimeoutUnitField.setAccessible(true);
+        TimeUnit requestTimeoutUnit = (TimeUnit) 
requestTimeoutUnitField.get(builder);
+        assertEquals(1, requestTimeout);
+        assertEquals(TimeUnit.SECONDS, requestTimeoutUnit);
+    }
+
+    @Test
     public void testAuthTlsWithJsonParam() throws Exception {
 
         Properties properties = new Properties();
diff --git 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/PulsarAdminTool.java
 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/PulsarAdminTool.java
index ccc2854..65281cc 100644
--- 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/PulsarAdminTool.java
+++ 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/PulsarAdminTool.java
@@ -27,6 +27,7 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
+import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
 
 import org.apache.commons.lang3.StringUtils;
@@ -44,6 +45,10 @@ public class PulsarAdminTool {
     @Parameter(names = { "--auth-plugin" }, description = "Authentication 
plugin class name.")
     String authPluginClassName = null;
 
+    @Parameter(names = { "--request-timeout" }, description = "Request time 
out in seconds for "
+            + "the pulsar admin client for any request")
+    int requestTimeout = PulsarAdmin.DEFAULT_REQUEST_TIMEOUT_SECONDS;
+
     @Parameter(
         names = { "--auth-params" },
         description = "Authentication parameters, whose format is determined 
by the implementation " +
@@ -143,6 +148,7 @@ public class PulsarAdminTool {
         try {
             adminBuilder.serviceHttpUrl(serviceUrl);
             adminBuilder.authentication(authPluginClassName, authParams);
+            adminBuilder.requestTimeout(requestTimeout, TimeUnit.SECONDS);
             PulsarAdmin admin = adminFactory.apply(adminBuilder);
             for (Map.Entry<String, Class<?>> c : commandMap.entrySet()) {
                 addCommand(c, admin);

Reply via email to