From 84c66567ae37684f9e2f88d9bae91cdc1914d6b1 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 18 Mar 2009 22:07:32 +0000
Subject: [PATCH] Fix for issue 3854 (Uninstall fails on Windows (due to log files))
---
opends/src/quicksetup/org/opends/quicksetup/util/ServerController.java | 176 +++++++++++++++++++++++++++++++++-------------------------
1 files changed, 99 insertions(+), 77 deletions(-)
diff --git a/opends/src/quicksetup/org/opends/quicksetup/util/ServerController.java b/opends/src/quicksetup/org/opends/quicksetup/util/ServerController.java
index afd553c..44ef134 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/util/ServerController.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/util/ServerController.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2008 Sun Microsystems, Inc.
+ * Copyright 2008-2009 Sun Microsystems, Inc.
*/
package org.opends.quicksetup.util;
@@ -33,6 +33,7 @@
import static org.opends.messages.QuickSetupMessages.*;
import org.opends.quicksetup.*;
+
import static org.opends.quicksetup.util.Utils.*;
import org.opends.quicksetup.installer.InstallerHelper;
import org.opends.server.util.SetupUtils;
@@ -141,99 +142,120 @@
env.put(SetupUtils.OPENDS_JAVA_HOME, System.getProperty("java.home"));
env.remove(SetupUtils.OPENDS_JAVA_ARGS);
- try {
- Process process = pb.start();
+ LOG.log(Level.INFO, "Before calling stop-ds. Is server running? "+
+ installation.getStatus().isServerRunning());
- BufferedReader err =
- new BufferedReader(
- new InputStreamReader(process.getErrorStream()));
- BufferedReader out =
- new BufferedReader(
- new InputStreamReader(process.getInputStream()));
+ int stopTries = 3;
+ while (stopTries > 0)
+ {
+ stopTries --;
+ LOG.log(Level.INFO, "Launching stop command, stopTries left: "+
+ stopTries);
- /* Create these objects to resend the stop process output to the details
- * area.
- */
- new StopReader(err, true);
- new StopReader(out, false);
+ try
+ {
+ LOG.log(Level.INFO, "Launching stop command, argList: "+argList);
+ Process process = pb.start();
- int returnValue = process.waitFor();
+ BufferedReader err =
+ new BufferedReader(
+ new InputStreamReader(process.getErrorStream()));
+ BufferedReader out =
+ new BufferedReader(
+ new InputStreamReader(process.getInputStream()));
- int clientSideError =
- org.opends.server.protocols.ldap.
- LDAPResultCode.CLIENT_SIDE_CONNECT_ERROR;
- if ((returnValue == clientSideError) || (returnValue == 0)) {
- if (Utils.isWindows()) {
- /*
- * Sometimes the server keeps some locks on the files.
- * TODO: remove this code once stop-ds returns properly when server
- * is stopped.
- */
- int nTries = 10;
- boolean stopped = false;
+ /* Create these objects to resend the stop process output to the
+ * details area.
+ */
+ new StopReader(err, true);
+ new StopReader(out, false);
- for (int i = 0; i < nTries && !stopped; i++) {
- stopped = !installation.getStatus().isServerRunning();
- if (!stopped) {
- if (application != null) {
- MessageBuilder mb = new MessageBuilder();
- mb.append(application.getFormattedLog(
- INFO_PROGRESS_SERVER_WAITING_TO_STOP.get()));
- mb.append(application.getLineBreak());
- application.notifyListeners(mb.toMessage());
- }
+ int returnValue = process.waitFor();
+
+ int clientSideError =
+ org.opends.server.protocols.ldap.
+ LDAPResultCode.CLIENT_SIDE_CONNECT_ERROR;
+ if ((returnValue == clientSideError) || (returnValue == 0)) {
+ if (Utils.isWindows()) {
+ /*
+ * Sometimes the server keeps some locks on the files.
+ * TODO: remove this code once stop-ds returns properly when
+ * server is stopped.
+ */
+ int nTries = 10;
+ boolean stopped = false;
+
+ for (int i = 0; i < nTries && !stopped; i++) {
LOG.log(Level.FINE, "waiting for server to stop");
try {
Thread.sleep(5000);
}
- catch (Exception ex) {
-
+ catch (Exception ex)
+ {
}
- } else {
- break;
+ stopped = !installation.getStatus().isServerRunning();
+ LOG.log(Level.INFO,
+ "After calling stop-ds. Is server running? "+!stopped);
+
+ if (!stopped) {
+ if (application != null) {
+ MessageBuilder mb = new MessageBuilder();
+ mb.append(application.getFormattedLog(
+ INFO_PROGRESS_SERVER_WAITING_TO_STOP.get()));
+ mb.append(application.getLineBreak());
+ application.notifyListeners(mb.toMessage());
+ }
+ } else {
+ break;
+ }
+ }
+ if (!stopped) {
+ returnValue = -1;
}
}
- if (!stopped) {
- returnValue = -1;
+ }
+
+ if (returnValue == clientSideError) {
+ if (application != null) {
+ MessageBuilder mb = new MessageBuilder();
+ mb.append(application.getLineBreak());
+ mb.append(application.getFormattedLog(
+ INFO_PROGRESS_SERVER_ALREADY_STOPPED.get()));
+ mb.append(application.getLineBreak());
+ application.notifyListeners(mb.toMessage());
}
- }
- }
-
- if (returnValue == clientSideError) {
- if (application != null) {
- MessageBuilder mb = new MessageBuilder();
- mb.append(application.getLineBreak());
- mb.append(application.getFormattedLog(
- INFO_PROGRESS_SERVER_ALREADY_STOPPED.get()));
- mb.append(application.getLineBreak());
- application.notifyListeners(mb.toMessage());
- }
- LOG.log(Level.INFO, "server already stopped");
-
- } else if (returnValue != 0) {
- /*
- * The return code is not the one expected, assume the server could
- * not be stopped.
- */
- throw new ApplicationException(
- ReturnCode.STOP_ERROR,
+ LOG.log(Level.INFO, "server already stopped");
+ break;
+ } else if (returnValue != 0) {
+ if (stopTries <= 0)
+ {
+ /*
+ * The return code is not the one expected, assume the server
+ * could not be stopped.
+ */
+ throw new ApplicationException(
+ ReturnCode.STOP_ERROR,
INFO_ERROR_STOPPING_SERVER_CODE.get(
- String.valueOf(returnValue)),
- null);
- } else {
- if (application != null) {
- application.notifyListeners(application.getFormattedLog(
- INFO_PROGRESS_SERVER_STOPPED.get()));
+ String.valueOf(returnValue)),
+ null);
+ }
+ } else {
+ if (application != null) {
+ application.notifyListeners(application.getFormattedLog(
+ INFO_PROGRESS_SERVER_STOPPED.get()));
+ }
+ LOG.log(Level.INFO, "server stopped");
+ break;
}
- LOG.log(Level.INFO, "server stopped");
- }
- } catch (Exception e) {
- throw new ApplicationException(
- ReturnCode.STOP_ERROR, getThrowableMsg(
- INFO_ERROR_STOPPING_SERVER.get(), e), e);
+ } catch (Exception e) {
+ throw new ApplicationException(
+ ReturnCode.STOP_ERROR, getThrowableMsg(
+ INFO_ERROR_STOPPING_SERVER.get(), e), e);
+ }
}
- } finally {
+ }
+ finally {
if (suppressOutput && StandardOutputSuppressor.isSuppressed()) {
StandardOutputSuppressor.unsuppress();
}
--
Gitblit v1.10.0