From 6d3f56fc888974eacd0645805e3dead753e255f3 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 07 May 2008 10:16:24 +0000
Subject: [PATCH] Fix for issue 3237 (On Windows, start-ds -Q doesn't start the server)
---
opends/src/server/org/opends/server/core/DirectoryServer.java | 21 +++++++++++++++++----
opends/resource/bin/start-ds | 11 +++++++++++
opends/resource/bin/start-ds.bat | 20 ++++++++++++++++++++
3 files changed, 48 insertions(+), 4 deletions(-)
diff --git a/opends/resource/bin/start-ds b/opends/resource/bin/start-ds
index a8c0a99..b379650 100755
--- a/opends/resource/bin/start-ds
+++ b/opends/resource/bin/start-ds
@@ -121,6 +121,17 @@
org.opends.server.core.DirectoryServer \
--configClass org.opends.server.extensions.ConfigFileHandler \
--configFile "${CONFIG_FILE}" "${@}"
+ elif test ${EC} -eq 104
+ then
+ #
+ # run no detach quiet
+ #
+ echo $$ > "${PID_FILE}"
+ rm -f "${LOG_FILE}"
+ exec "${OPENDS_JAVA_BIN}" ${OPENDS_JAVA_ARGS} ${SCRIPT_NAME_ARG} \
+ org.opends.server.core.DirectoryServer \
+ --configClass org.opends.server.extensions.ConfigFileHandler \
+ --configFile "${CONFIG_FILE}" "${@}" > /dev/null
else
#
# an error or the server is already started. Just return the code provided
diff --git a/opends/resource/bin/start-ds.bat b/opends/resource/bin/start-ds.bat
index 3ea5c91..a4010ab 100644
--- a/opends/resource/bin/start-ds.bat
+++ b/opends/resource/bin/start-ds.bat
@@ -56,6 +56,8 @@
if %errorlevel% == 100 goto runNoDetach
if %errorlevel% == 101 goto runAsService
if %errorlevel% == 102 goto runDetachCalledByWinService
+if %errorlevel% == 103 goto runDetachQuiet
+if %errorlevel% == 104 goto runNoDetachQuiet
goto end
:serverAlreadyStarted
@@ -70,6 +72,14 @@
"%OPENDS_JAVA_BIN%" %OPENDS_SERVER_JAVA_ARGS% %SCRIPT_NAME_ARG% org.opends.server.core.DirectoryServer --configClass org.opends.server.extensions.ConfigFileHandler --configFile "%DIR_HOME%\config\config.ldif" %*
goto end
+:runNoDetachQuiet
+echo %SCRIPT%: Run no detach >> %LOG%
+if not exist "%DIR_HOME%\logs\server.out" echo. > "%DIR_HOME%\logs\server.out"
+if not exist "%DIR_HOME%\logs\server.starting" echo. > "%DIR_HOME%\logs\server.starting"
+if exist "%DIR_HOME%\lib\set-java-args.bat %SCRIPT%" DO call "%DIR_HOME%\lib\set-java-args.bat"
+"%OPENDS_JAVA_BIN%" %OPENDS_SERVER_JAVA_ARGS% %SCRIPT_NAME_ARG% org.opends.server.core.DirectoryServer --configClass org.opends.server.extensions.ConfigFileHandler --configFile "%DIR_HOME%\config\config.ldif" %* >> %LOG%
+goto end
+
:runDetach
echo %SCRIPT%: Run detach >> %LOG%
@@ -81,6 +91,16 @@
"%OPENDS_JAVA_BIN%" -Xms8M -Xmx8M org.opends.server.tools.WaitForFileDelete --targetFile "%DIR_HOME%\logs\server.starting" --logFile "%DIR_HOME%\logs\server.out"
goto checkStarted
+:runDetachQuiet
+echo %SCRIPT%: Run detach >> %LOG%
+if not exist "%DIR_HOME%\logs\server.out" echo. > "%DIR_HOME%\logs\server.out"
+if not exist "%DIR_HOME%\logs\server.starting" echo. > "%DIR_HOME%\logs\server.starting"
+if exist "%DIR_HOME%\lib\set-java-args.bat" DO call "%DIR_HOME%\lib\set-java-args.bat"
+"%DIR_HOME%\lib\winlauncher.exe" start "%DIR_HOME%" "%OPENDS_JAVA_BIN%" %OPENDS_SERVER_JAVA_ARGS% %SCRIPT_NAME_ARG% org.opends.server.core.DirectoryServer --configClass org.opends.server.extensions.ConfigFileHandler --configFile "%DIR_HOME%\config\config.ldif" %*
+echo %SCRIPT%: Waiting for "%DIR_HOME%\logs\server.out" to be deleted >> %LOG%
+"%OPENDS_JAVA_BIN%" -Xms8M -Xmx8M org.opends.server.tools.WaitForFileDelete --targetFile "%DIR_HOME%\logs\server.starting" --logFile "%DIR_HOME%\logs\server.out" >> %LOG%
+goto checkStarted
+
:runDetachCalledByWinService
rem We write the output of the start command to the winservice.out file.
echo %SCRIPT%: Run detach called by windows service >> %LOG%
diff --git a/opends/src/server/org/opends/server/core/DirectoryServer.java b/opends/src/server/org/opends/server/core/DirectoryServer.java
index 9887847..5a2f5b3 100644
--- a/opends/src/server/org/opends/server/core/DirectoryServer.java
+++ b/opends/src/server/org/opends/server/core/DirectoryServer.java
@@ -273,6 +273,11 @@
* output.
*/
private static int START_AS_DETACH_QUIET = 103;
+ /**
+ * The server must be started as non-detached process and should not produce
+ * any output.
+ */
+ private static int START_AS_NON_DETACH_QUIET = 104;
// The policy to use regarding single structural objectclass enforcement.
private AcceptRejectWarn singleStructuralClassPolicy;
@@ -1172,7 +1177,7 @@
String.valueOf(configClass),
String.valueOf(configFile),
e.getLocalizedMessage());
- throw new InitializationException(message);
+ throw new InitializationException(message, e);
}
}
@@ -9284,8 +9289,9 @@
// intended command. If that command was successful, then we'll have an
// exit code of NOTHING_TO_DO (0). Otherwise, it will have an exit code
// that is something other than NOTHING_TO_DO, SERVER_ALREADY_STARTED,
- // START_AS_DETACH, START_AS_NON_DETACH, START_AS_WINDOWS_SERVICE to
- // indicate that a problem occurred.
+ // START_AS_DETACH, START_AS_NON_DETACH, START_AS_WINDOWS_SERVICE,
+ // START_AS_DETACH_QUIET, START_AS_NON_DETACH_QUIET to indicate that a
+ // problem occurred.
if (argParser.usageOrVersionDisplayed())
{
// We're just trying to display usage, and that's already been done so
@@ -9740,7 +9746,14 @@
{
if (noDetachPresent)
{
- returnValue = START_AS_NON_DETACH;
+ if (quietMode.isPresent())
+ {
+ returnValue = START_AS_NON_DETACH_QUIET;
+ }
+ else
+ {
+ returnValue = START_AS_NON_DETACH;
+ }
}
else if (quietMode.isPresent())
{
--
Gitblit v1.10.0