From 03fe0954e42abf00746b8efa4c79ee74cf514427 Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Thu, 27 May 2010 15:10:50 +0000
Subject: [PATCH] Fix an issue with connection timeouts in CLI. The timeout is now configurable on CLI with the --connectTimeout option (expressed in milliseconds), the default is 30 000 milliseconds. This solves Issue 4196.
---
opends/src/guitools/org/opends/guitools/controlpanel/ControlPanelArgumentParser.java | 54 +++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 39 insertions(+), 15 deletions(-)
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ControlPanelArgumentParser.java b/opends/src/guitools/org/opends/guitools/controlpanel/ControlPanelArgumentParser.java
index adf08fd..ef04b1e 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ControlPanelArgumentParser.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ControlPanelArgumentParser.java
@@ -22,29 +22,17 @@
* CDDL HEADER END
*
*
- * Copyright 2009 Sun Microsystems, Inc.
+ * Copyright 2009-2010 Sun Microsystems, Inc.
*/
package org.opends.guitools.controlpanel;
import static org.opends.messages.ToolMessages.*;
-import static org.opends.server.tools.ToolConstants.OPTION_LONG_BINDDN;
-import static org.opends.server.tools.ToolConstants.OPTION_LONG_BINDPWD;
-import static org.opends.server.tools.ToolConstants.OPTION_LONG_BINDPWD_FILE;
-import static org.opends.server.tools.ToolConstants.OPTION_LONG_HELP;
-import static org.opends.server.tools.ToolConstants.OPTION_LONG_HOST;
-import static org.opends.server.tools.ToolConstants.OPTION_LONG_PORT;
-import static org.opends.server.tools.ToolConstants.OPTION_LONG_TRUSTALL;
-import static org.opends.server.tools.ToolConstants.OPTION_SHORT_BINDDN;
-import static org.opends.server.tools.ToolConstants.OPTION_SHORT_BINDPWD;
-import static org.opends.server.tools.ToolConstants.OPTION_SHORT_BINDPWD_FILE;
-import static org.opends.server.tools.ToolConstants.OPTION_SHORT_HELP;
-import static org.opends.server.tools.ToolConstants.OPTION_SHORT_HOST;
-import static org.opends.server.tools.ToolConstants.OPTION_SHORT_PORT;
-import static org.opends.server.tools.ToolConstants.OPTION_SHORT_TRUSTALL;
+import static org.opends.server.tools.ToolConstants.*;
import java.util.LinkedHashSet;
+import org.opends.admin.ads.util.ConnectionUtils;
import org.opends.messages.Message;
import org.opends.quicksetup.Constants;
import org.opends.quicksetup.UserData;
@@ -92,6 +80,11 @@
*/
private BooleanArgument trustAllArg = null;
+ /**
+ * Argument to specify the connect timeout.
+ */
+ private IntegerArgument connectTimeoutArg = null;
+
private BooleanArgument showUsageArg;
/**
@@ -141,6 +134,7 @@
portArg = new IntegerArgument("port", OPTION_SHORT_PORT, OPTION_LONG_PORT,
false, false, true, INFO_PORT_PLACEHOLDER.get(),
getDefaultAdministrationPort(), null,
+ true, 1, true, 65535,
INFO_DESCRIPTION_ADMIN_PORT.get());
portArg.setPropertyName(OPTION_LONG_PORT);
addArgument(portArg);
@@ -170,6 +164,16 @@
trustAllArg.setPropertyName(OPTION_LONG_TRUSTALL);
addArgument(trustAllArg);
+ int defaultTimeout = ConnectionUtils.getDefaultLDAPTimeout();
+ connectTimeoutArg = new IntegerArgument(OPTION_LONG_CONNECT_TIMEOUT,
+ null, OPTION_LONG_CONNECT_TIMEOUT,
+ false, false, true, INFO_TIMEOUT_PLACEHOLDER.get(),
+ defaultTimeout, null,
+ true, 0, false, Integer.MAX_VALUE,
+ INFO_DESCRIPTION_CONNECTION_TIMEOUT.get());
+ connectTimeoutArg.setPropertyName(OPTION_LONG_CONNECT_TIMEOUT);
+ addArgument(connectTimeoutArg);
+
showUsageArg = new BooleanArgument("help", OPTION_SHORT_HELP,
OPTION_LONG_HELP,
INFO_DESCRIPTION_USAGE.get());
@@ -283,4 +287,24 @@
return trustAllArg.isPresent();
}
+ /**
+ * Returns the timeout to be used to connect in milliseconds. The method
+ * must be called after parsing the arguments.
+ * @return the timeout to be used to connect in milliseconds. Returns
+ * {@code 0} if there is no timeout.
+ * @throw {@code IllegalStateException} if the method is called before
+ * parsing the arguments.
+ */
+ public int getConnectTimeout()
+ {
+ try
+ {
+ return connectTimeoutArg.getIntValue();
+ }
+ catch (ArgumentException ae)
+ {
+ throw new IllegalStateException("Argument parser is not parsed: "+ae, ae);
+ }
+ }
+
}
--
Gitblit v1.10.0