From a8192343ef279e3fe08b024e5a1e7a49f12862d5 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))
---
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/BackgroundTask.java | 4
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/QuickSetupCli.java | 21 +
opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallLauncher.java | 2
opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java | 41 +++
opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/ServerController.java | 176 +++++++++-------
opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallCliHelper.java | 383 ++++++++++++++++++++--------------
opendj-sdk/opends/src/messages/messages/admin_tool.properties | 5
7 files changed, 387 insertions(+), 245 deletions(-)
diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallCliHelper.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallCliHelper.java
index 21bc82a..503c6ae 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallCliHelper.java
+++ b/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallCliHelper.java
@@ -134,158 +134,177 @@
{
parser = args;
UninstallUserData userData = new UninstallUserData();
-
- boolean isInteractive;
- boolean isQuiet;
- boolean isVerbose;
- boolean isCancelled = false;
-
- /* Step 1: analyze the arguments.
- */
-
- isInteractive = args.isInteractive();
-
- isQuiet = args.isQuiet();
-
- isVerbose = args.isVerbose();
-
- userData.setQuiet(isQuiet);
- userData.setVerbose(isVerbose);
- userData.setForceOnError(args.isForceOnError());
- userData.setTrustManager(args.getTrustManager());
-
- /*
- * Step 2: check that the provided parameters are compatible.
- */
- MessageBuilder buf = new MessageBuilder();
- int v = args.validateGlobalOptions(buf);
- if (v != DsFrameworkCliReturnCode.SUCCESSFUL_NOP.getReturnCode())
+ try
{
- throw new UserDataException(null, buf.toMessage());
- }
+ boolean isInteractive;
+ boolean isQuiet;
+ boolean isVerbose;
+ boolean isCancelled = false;
- /* Step 3: If this is an interactive uninstall ask for confirmation to
- * delete the different parts of the installation if the user did not
- * specify anything to delete. If we are not in interactive mode
- * check that the user specified something to be deleted.
- */
- Set<String> outsideDbs;
- Set<String> outsideLogs;
- Configuration config =
- Installation.getLocal().getCurrentConfiguration();
- try {
- outsideDbs = config.getOutsideDbs();
- } catch (IOException ioe) {
- outsideDbs = Collections.emptySet();
- LOG.log(Level.INFO, "error determining outside databases", ioe);
- }
+ /* Step 1: analyze the arguments.
+ */
- try {
- outsideLogs = config.getOutsideLogs();
- } catch (IOException ioe) {
- outsideLogs = Collections.emptySet();
- LOG.log(Level.INFO, "error determining outside logs", ioe);
- }
+ isInteractive = args.isInteractive();
- boolean somethingSpecifiedToDelete =
- args.removeAll() ||
- args.removeBackupFiles() ||
- args.removeDatabases() ||
- args.removeLDIFFiles() ||
- args.removeConfigurationFiles() ||
- args.removeLogFiles() ||
- args.removeServerLibraries();
+ isQuiet = args.isQuiet();
- if (somethingSpecifiedToDelete)
- {
- userData.setRemoveBackups(args.removeAll() || args.removeBackupFiles());
- userData.setRemoveConfigurationAndSchema(args.removeAll() ||
- args.removeConfigurationFiles());
- userData.setRemoveDatabases(args.removeAll() || args.removeDatabases());
- userData.setRemoveLDIFs(args.removeAll() || args.removeLDIFFiles());
- userData.setRemoveLibrariesAndTools(args.removeAll() ||
- args.removeServerLibraries());
- userData.setRemoveLogs(args.removeAll() || args.removeLogFiles());
+ isVerbose = args.isVerbose();
- userData.setExternalDbsToRemove(outsideDbs);
- userData.setExternalLogsToRemove(outsideLogs);
- }
- else
- {
- if (!isInteractive)
+ userData.setQuiet(isQuiet);
+ userData.setVerbose(isVerbose);
+ userData.setForceOnError(args.isForceOnError());
+ userData.setTrustManager(args.getTrustManager());
+
+ /*
+ * Step 2: check that the provided parameters are compatible.
+ */
+ MessageBuilder buf = new MessageBuilder();
+ int v = args.validateGlobalOptions(buf);
+ if (v != DsFrameworkCliReturnCode.SUCCESSFUL_NOP.getReturnCode())
{
- throw new UserDataException(null,
- ERR_CLI_UNINSTALL_NOTHING_TO_BE_UNINSTALLED_NON_INTERACTIVE.get());
+ throw new UserDataException(null, buf.toMessage());
+ }
+
+ /* Step 3: If this is an interactive uninstall ask for confirmation to
+ * delete the different parts of the installation if the user did not
+ * specify anything to delete. If we are not in interactive mode
+ * check that the user specified something to be deleted.
+ */
+ Set<String> outsideDbs;
+ Set<String> outsideLogs;
+ Configuration config =
+ Installation.getLocal().getCurrentConfiguration();
+ try {
+ outsideDbs = config.getOutsideDbs();
+ } catch (IOException ioe) {
+ outsideDbs = Collections.emptySet();
+ LOG.log(Level.INFO, "error determining outside databases", ioe);
+ }
+
+ try {
+ outsideLogs = config.getOutsideLogs();
+ } catch (IOException ioe) {
+ outsideLogs = Collections.emptySet();
+ LOG.log(Level.INFO, "error determining outside logs", ioe);
+ }
+
+ boolean somethingSpecifiedToDelete =
+ args.removeAll() ||
+ args.removeBackupFiles() ||
+ args.removeDatabases() ||
+ args.removeLDIFFiles() ||
+ args.removeConfigurationFiles() ||
+ args.removeLogFiles() ||
+ args.removeServerLibraries();
+
+ if (somethingSpecifiedToDelete)
+ {
+ userData.setRemoveBackups(args.removeAll() || args.removeBackupFiles());
+ userData.setRemoveConfigurationAndSchema(args.removeAll() ||
+ args.removeConfigurationFiles());
+ userData.setRemoveDatabases(args.removeAll() || args.removeDatabases());
+ userData.setRemoveLDIFs(args.removeAll() || args.removeLDIFFiles());
+ userData.setRemoveLibrariesAndTools(args.removeAll() ||
+ args.removeServerLibraries());
+ userData.setRemoveLogs(args.removeAll() || args.removeLogFiles());
+
+ userData.setExternalDbsToRemove(outsideDbs);
+ userData.setExternalLogsToRemove(outsideLogs);
}
else
{
- isCancelled = askWhatToDelete(userData, outsideDbs, outsideLogs);
+ if (!isInteractive)
+ {
+ throw new UserDataException(null,
+ ERR_CLI_UNINSTALL_NOTHING_TO_BE_UNINSTALLED_NON_INTERACTIVE.get());
+ }
+ else
+ {
+ isCancelled = askWhatToDelete(userData, outsideDbs, outsideLogs);
+ }
}
- }
- String adminUid = args.getAdministratorUID();
- if ((adminUid == null) && !args.isInteractive())
- {
- adminUid = args.getDefaultAdministratorUID();
- }
- userData.setAdminUID(adminUid);
- userData.setAdminPwd(args.getBindPassword());
- String referencedHostName = args.getReferencedHostName();
- if ((referencedHostName == null) && !args.isInteractive())
- {
- referencedHostName = args.getDefaultReferencedHostName();
- }
- try
- {
- UninstallData d = new UninstallData(Installation.getLocal());
- userData.setReplicationServer(
- referencedHostName+":"+d.getReplicationServerPort());
+ String adminUid = args.getAdministratorUID();
+ if ((adminUid == null) && !args.isInteractive())
+ {
+ adminUid = args.getDefaultAdministratorUID();
+ }
+ userData.setAdminUID(adminUid);
+ userData.setAdminPwd(args.getBindPassword());
+ String referencedHostName = args.getReferencedHostName();
+ if ((referencedHostName == null) && !args.isInteractive())
+ {
+ referencedHostName = args.getDefaultReferencedHostName();
+ }
+ try
+ {
+ UninstallData d = new UninstallData(Installation.getLocal());
+ userData.setReplicationServer(
+ referencedHostName+":"+d.getReplicationServerPort());
+ }
+ catch (Throwable t)
+ {
+ LOG.log(Level.SEVERE, "Could not create UninstallData: "+t, t);
+ userData.setReplicationServer(
+ referencedHostName+":8989");
+ }
+ info = ControlPanelInfo.getInstance();
+ info.setTrustManager(userData.getTrustManager());
+ info.regenerateDescriptor();
+ info.setConnectionPolicy(ConnectionProtocolPolicy.USE_ADMIN);
+
+ String adminConnectorUrl = info.getAdminConnectorURL();
+
+ if (adminConnectorUrl == null)
+ {
+ LOG.log(Level.WARNING,
+ "Error retrieving a valid LDAP URL in conf file.");
+ if (!parser.isInteractive())
+ {
+ Message msg = ERR_COULD_NOT_FIND_VALID_LDAPURL.get();
+ throw new ApplicationException(ReturnCode.APPLICATION_ERROR, msg,
+ null);
+ }
+ }
+ userData.setLocalServerUrl(adminConnectorUrl);
+ userData.setReferencedHostName(referencedHostName);
+
+ /*
+ * Step 4: check if server is running. Depending if it is running and the
+ * OS we are running, ask for authentication information.
+ */
+ if (!isCancelled)
+ {
+ isCancelled = checkServerState(userData);
+ }
+
+ if (isCancelled && !userData.isForceOnError())
+ {
+ LOG.log(Level.INFO, "User cancelled uninstall.");
+ userData = null;
+ }
+
+ if ((userData != null) && !args.isQuiet())
+ {
+ println();
+ }
}
catch (Throwable t)
{
- LOG.log(Level.SEVERE, "Could not create UninstallData: "+t, t);
- userData.setReplicationServer(
- referencedHostName+":8989");
- }
- info = ControlPanelInfo.getInstance();
- info.setTrustManager(userData.getTrustManager());
- info.regenerateDescriptor();
- info.setConnectionPolicy(ConnectionProtocolPolicy.USE_ADMIN);
-
- String adminConnectorUrl = info.getAdminConnectorURL();
-
- if (adminConnectorUrl == null)
- {
- LOG.log(Level.WARNING,
- "Error retrieving a valid LDAP URL in conf file.");
- if (!parser.isInteractive())
+ LOG.log(Level.WARNING, "Exception: "+t, t);
+ if (t instanceof UserDataException)
{
- Message msg = ERR_COULD_NOT_FIND_VALID_LDAPURL.get();
- throw new ApplicationException(ReturnCode.APPLICATION_ERROR, msg, null);
+ throw (UserDataException)t;
+ }
+ else if (t instanceof ApplicationException)
+ {
+ throw (ApplicationException)t;
+ }
+ else
+ {
+ throw new IllegalStateException("Unexpected error: "+t, t);
}
}
- userData.setLocalServerUrl(adminConnectorUrl);
- userData.setReferencedHostName(referencedHostName);
-
- /*
- * Step 4: check if server is running. Depending if it is running and the
- * OS we are running, ask for authentication information.
- */
- if (!isCancelled)
- {
- isCancelled = checkServerState(userData);
- }
-
- if (isCancelled && !userData.isForceOnError())
- {
- LOG.log(Level.INFO, "User cancelled uninstall.");
- userData = null;
- }
-
- if ((userData != null) && !args.isQuiet())
- {
- println();
- }
-
+ LOG.log(Level.INFO, "Successfully created user data");
return userData;
}
@@ -472,7 +491,8 @@
{
somethingSelected = false;
println();
- println(ERR_CLI_UNINSTALL_NOTHING_TO_BE_UNINSTALLED.get());
+ printErrorMessage(
+ ERR_CLI_UNINSTALL_NOTHING_TO_BE_UNINSTALLED.get());
}
else
{
@@ -516,6 +536,12 @@
throw new UserDataException(Step.CONFIRM_UNINSTALL,
Utils.getThrowableMsg(INFO_BUG_MSG.get(), t));
}
+ LOG.log(Level.INFO, "interactive: "+interactive);
+ LOG.log(Level.INFO, "forceOnError: "+forceOnError);
+ LOG.log(Level.INFO, "conf.isADS(): "+conf.isADS());
+ LOG.log(Level.INFO, "conf.isReplicationServer(): "+
+ conf.isReplicationServer());
+ LOG.log(Level.INFO, "conf.isServerRunning(): "+conf.isServerRunning());
if (conf.isADS() && conf.isReplicationServer())
{
if (conf.isServerRunning())
@@ -562,6 +588,8 @@
boolean errorWithRemote =
!updateUserUninstallDataWithRemoteServers(userData);
cancelled = errorWithRemote && !parser.isForceOnError();
+ LOG.log(Level.INFO, "Non interactive mode. errorWithRemote: "+
+ errorWithRemote);
}
}
else
@@ -595,6 +623,7 @@
cancelled = !confirmToStopServer();
}
}
+ userData.setStopServer(true);
}
else
{
@@ -639,6 +668,8 @@
/* During all the confirmations, the server might be stopped. */
userData.setStopServer(
Installation.getLocal().getStatus().isServerRunning());
+ LOG.log(Level.INFO, "Must stop the server after confirmations? "+
+ userData.getStopServer());
}
}
else
@@ -659,6 +690,8 @@
/* During all the confirmations, the server might be stopped. */
userData.setStopServer(
Installation.getLocal().getStatus().isServerRunning());
+ LOG.log(Level.INFO, "Must stop the server after confirmations? "+
+ userData.getStopServer());
}
}
catch (CLIException ce)
@@ -684,6 +717,7 @@
}
}
}
+ LOG.log(Level.INFO, "cancelled: "+cancelled);
return cancelled;
}
@@ -862,11 +896,11 @@
couldConnect = true;
}
catch (ArgumentException e) {
- println(e.getMessageObject());
+ printErrorMessage(e.getMessageObject());
println();
}
catch (ClientException e) {
- println(e.getMessageObject());
+ printErrorMessage(e.getMessageObject());
println();
}
finally
@@ -943,6 +977,7 @@
private boolean startServer(boolean supressOutput)
{
+ LOG.log(Level.INFO, "startServer, supressOutput: "+supressOutput);
boolean serverStarted = false;
Application application = new Application()
{
@@ -1074,14 +1109,22 @@
printlnProgress();
}
serverStarted = Installation.getLocal().getStatus().isServerRunning();
+ LOG.log(Level.INFO, "server started successfully. serverStarted: "+
+ serverStarted);
}
catch (ApplicationException ae)
{
+ LOG.log(Level.WARNING, "ApplicationException: "+ae, ae);
if (!supressOutput)
{
- println(ae.getMessageObject());
+ printErrorMessage(ae.getMessageObject());
}
}
+ catch (Throwable t)
+ {
+ LOG.log(Level.SEVERE, "Unexpected error: "+t, t);
+ throw new IllegalStateException("Unexpected error: "+t, t);
+ }
return serverStarted;
}
@@ -1110,6 +1153,10 @@
boolean exceptionOccurred = true;
+ Message exceptionMsg = null;
+
+ LOG.log(Level.INFO, "Updating user data with remote servers.");
+
InitialLdapContext ctx = null;
try
{
@@ -1146,6 +1193,7 @@
forceTrustManagerInitialization();
updateTrustManager(userData, ci);
}
+ LOG.log(Level.INFO, "Reloading topology");
TopologyCache cache = new TopologyCache(adsContext,
userData.getTrustManager());
cache.getFilter().setSearchMonitoringInformation(false);
@@ -1160,21 +1208,20 @@
LOG.log(Level.WARNING, "Error connecting to server: "+ne, ne);
if (Utils.isCertificateException(ne))
{
- println();
- println(INFO_ERROR_READING_CONFIG_LDAP_CERTIFICATE.get(
- ne.getMessage()));
+ String details = ne.getMessage() != null ?
+ ne.getMessage() : ne.toString();
+ exceptionMsg =
+ INFO_ERROR_READING_CONFIG_LDAP_CERTIFICATE.get(details);
}
else
{
- println();
- println(
- Utils.getThrowableMsg(INFO_ERROR_CONNECTING_TO_LOCAL.get(), ne));
+ exceptionMsg = Utils.getThrowableMsg(
+ INFO_ERROR_CONNECTING_TO_LOCAL.get(), ne);
}
} catch (TopologyCacheException te)
{
LOG.log(Level.WARNING, "Error connecting to server: "+te, te);
- println();
- println(Utils.getMessage(te));
+ exceptionMsg = Utils.getMessage(te);
} catch (ApplicationException ae)
{
@@ -1183,8 +1230,7 @@
} catch (Throwable t)
{
LOG.log(Level.WARNING, "Error connecting to server: "+t, t);
- println();
- println(Utils.getThrowableMsg(INFO_BUG_MSG.get(), t));
+ exceptionMsg = Utils.getThrowableMsg(INFO_BUG_MSG.get(), t);
}
finally
{
@@ -1206,20 +1252,24 @@
{
if (forceOnError)
{
- println(ERR_UNINSTALL_ERROR_UPDATING_REMOTE_FORCE.get(
+ println();
+ printErrorMessage(ERR_UNINSTALL_ERROR_UPDATING_REMOTE_FORCE.get(
"--"+parser.getSecureArgsList().adminUidArg.getLongIdentifier(),
"--"+ToolConstants.OPTION_LONG_BINDPWD,
- "--"+ToolConstants.OPTION_LONG_BINDPWD_FILE));
+ "--"+ToolConstants.OPTION_LONG_BINDPWD_FILE,
+ String.valueOf(exceptionMsg)));
}
else
{
+ println();
throw new UserDataException(null,
ERR_UNINSTALL_ERROR_UPDATING_REMOTE_NO_FORCE.get(
"--"+
parser.getSecureArgsList().adminUidArg.getLongIdentifier(),
"--"+ToolConstants.OPTION_LONG_BINDPWD,
"--"+ToolConstants.OPTION_LONG_BINDPWD_FILE,
- "--"+parser.forceOnErrorArg.getLongIdentifier()));
+ "--"+parser.forceOnErrorArg.getLongIdentifier(),
+ String.valueOf(exceptionMsg)));
}
}
else
@@ -1237,6 +1287,7 @@
}
}
userData.setUpdateRemoteReplication(accepted);
+ LOG.log(Level.INFO, "accepted: "+accepted);
return accepted;
}
@@ -1261,6 +1312,8 @@
boolean reloadTopologyCache = false;
boolean interactive = parser.isInteractive();
+ LOG.log(Level.INFO, "Handle topology cache.");
+
Set<TopologyCacheException> exceptions =
new HashSet<TopologyCacheException>();
/* Analyze if we had any exception while loading servers. For the moment
@@ -1282,6 +1335,7 @@
/* Check the exceptions and see if we throw them or not. */
for (TopologyCacheException e : exceptions)
{
+ LOG.log(Level.INFO, "Analyzing exception: "+e, e);
if (stopProcessing)
{
break;
@@ -1290,7 +1344,7 @@
{
case NOT_GLOBAL_ADMINISTRATOR:
println();
- println(INFO_NOT_GLOBAL_ADMINISTRATOR_PROVIDED.get());
+ printErrorMessage(INFO_NOT_GLOBAL_ADMINISTRATOR_PROVIDED.get());
stopProcessing = true;
break;
case GENERIC_CREATING_CONNECTION:
@@ -1356,18 +1410,28 @@
}
else
{
+ LOG.log(Level.INFO, "exceptionMsgs: "+exceptionMsgs);
if (exceptionMsgs.size() > 0)
{
- Message msg = Utils.getMessageFromCollection(exceptionMsgs,
- Constants.LINE_SEPARATOR);
if (parser.isForceOnError())
{
+ Message msg = Utils.getMessageFromCollection(exceptionMsgs,
+ Constants.LINE_SEPARATOR);
println();
- println(msg);
+ printErrorMessage(msg);
returnValue = false;
}
else
{
+ Message msg =
+ ERR_UNINSTALL_ERROR_UPDATING_REMOTE_NO_FORCE.get(
+ "--"+
+ parser.getSecureArgsList().adminUidArg.getLongIdentifier(),
+ "--"+ToolConstants.OPTION_LONG_BINDPWD,
+ "--"+ToolConstants.OPTION_LONG_BINDPWD_FILE,
+ "--"+parser.forceOnErrorArg.getLongIdentifier(),
+ Utils.getMessageFromCollection(exceptionMsgs,
+ Constants.LINE_SEPARATOR).toString());
throw new ApplicationException(ReturnCode.APPLICATION_ERROR, msg,
null);
}
@@ -1377,6 +1441,7 @@
returnValue = true;
}
}
+ LOG.log(Level.INFO, "Return value: "+returnValue);
return returnValue;
}
@@ -1485,4 +1550,10 @@
}
forceNonInteractive = false;
}
+
+ private void printErrorMessage(Message msg)
+ {
+ super.println(msg);
+ LOG.log(Level.WARNING, msg.toString());
+ }
}
diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallLauncher.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallLauncher.java
index 522e7c8..8d91480 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallLauncher.java
+++ b/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/UninstallLauncher.java
@@ -73,7 +73,7 @@
try {
QuickSetupLog.initLogFileHandler(
File.createTempFile(LOG_FILE_PREFIX, LOG_FILE_SUFFIX),
- "org.opends.guitools.uninstaller");
+ "org.opends.guitools");
} catch (Throwable t) {
System.err.println("Unable to initialize log");
diff --git a/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java b/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java
index 428a8e6..3040d85 100644
--- a/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java
+++ b/opendj-sdk/opends/src/guitools/org/opends/guitools/uninstaller/Uninstaller.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2006-2008 Sun Microsystems, Inc.
+ * Copyright 2006-2009 Sun Microsystems, Inc.
*/
package org.opends.guitools.uninstaller;
@@ -65,6 +65,7 @@
import org.opends.server.admin.std.client.RootCfgClient;
import org.opends.server.core.DirectoryServer;
import org.opends.server.tools.ConfigureWindowsService;
+import org.opends.server.tools.ToolConstants;
import org.opends.messages.Message;
import org.opends.messages.MessageBuilder;
import static org.opends.messages.AdminToolMessages.*;
@@ -95,6 +96,8 @@
private boolean errorOnRemoteOccurred;
private boolean errorDeletingOccurred;
+ private UninstallerArgumentParser parser;
+
private HashMap<ProgressStep, Integer> hmRatio =
new HashMap<ProgressStep, Integer>();
@@ -143,6 +146,8 @@
// Switch off attribute type name validation in client.
AttributeTypePropertyDefinition.setCheckSchema(false);
+
+ LOG.log(Level.INFO, "Uninstaller is created.");
}
/**
* {@inheritDoc}
@@ -573,8 +578,9 @@
*/
public UserData createUserData(Launcher launcher)
throws UserDataException, ApplicationException {
+ parser = (UninstallerArgumentParser)launcher.getArgumentParser();
return cliHelper.createUserData(
- (UninstallerArgumentParser)launcher.getArgumentParser(),
+ parser,
launcher.getArguments());
}
@@ -759,6 +765,8 @@
*/
public void run() {
runStarted = true;
+ LOG.log(Level.INFO, "run of the Uninstaller started");
+
initMaps();
PrintStream origErr = System.err;
PrintStream origOut = System.out;
@@ -772,6 +780,8 @@
boolean displaySeparator = false;
+ LOG.log(Level.INFO, "Update remote replication? "+
+ getUninstallUserData().getUpdateRemoteReplication());
if (getUninstallUserData().getUpdateRemoteReplication())
{
status = UninstallProgressStep.UNCONFIGURING_REPLICATION;
@@ -779,6 +789,7 @@
displaySeparator = true;
}
+ LOG.log(Level.INFO, "Stop server? "+getUserData().getStopServer());
if (getUserData().getStopServer()) {
status = UninstallProgressStep.STOPPING_SERVER;
if (displaySeparator && isVerbose()) {
@@ -796,6 +807,8 @@
}
displaySeparator = true;
}
+ LOG.log(Level.INFO, "Is Windows Service Enabled? "+
+ isWindowsServiceEnabled());
if (isWindowsServiceEnabled()) {
status = UninstallProgressStep.DISABLING_WINDOWS_SERVICE;
if (displaySeparator && isVerbose()) {
@@ -1569,8 +1582,9 @@
BackgroundTask worker = new BackgroundTask()
{
- public Object processBackgroundTask()throws TopologyCacheException
+ public Object processBackgroundTask() throws Throwable
{
+ LOG.log(Level.INFO, "Loading Topology Cache in askForAuthentication");
ADSContext adsContext = new ADSContext(ctx);
TopologyCache cache = new TopologyCache(adsContext,
getTrustManager());
@@ -1583,6 +1597,7 @@
qs.getDialog().workerFinished();
if (throwable != null)
{
+ LOG.log(Level.WARNING, "Throwable: "+throwable, throwable);
if (throwable instanceof TopologyCacheException)
{
qs.displayError(
@@ -1596,6 +1611,7 @@
getThrowableMsg(INFO_BUG_MSG.get(), throwable),
INFO_ERROR_TITLE.get());
}
+ LOG.log(Level.INFO, "Error was displayed");
}
else
{
@@ -1633,6 +1649,7 @@
*/
private void handleTopologyCache(QuickSetup qs, TopologyCache cache)
{
+ LOG.log(Level.INFO, "Handling TopologyCache");
boolean stopProcessing = false;
Set<TopologyCacheException> exceptions =
new HashSet<TopologyCacheException>();
@@ -1769,8 +1786,10 @@
getTrustManager().acceptCertificate(chain, authType, host);
BackgroundTask worker = new BackgroundTask()
{
- public Object processBackgroundTask() throws TopologyCacheException
+ public Object processBackgroundTask() throws Throwable
{
+ LOG.log(Level.INFO, "Reloading topology");
+ cache.getFilter().setSearchMonitoringInformation(false);
cache.reloadTopology();
return cache;
}
@@ -1936,6 +1955,10 @@
}
}
+ if (!hasReferences)
+ {
+ LOG.log(Level.INFO, "No references in: "+ server.getHostPort(true));
+ }
if (hasReferences)
{
LOG.log(Level.INFO, "Updating references in: "+ server.getHostPort(true));
@@ -1964,7 +1987,15 @@
if (!getUninstallUserData().isForceOnError())
{
- throw ae;
+ Message msg =
+ ERR_UNINSTALL_ERROR_UPDATING_REMOTE_NO_FORCE.get(
+ "--"+
+ parser.getSecureArgsList().adminUidArg.getLongIdentifier(),
+ "--"+ToolConstants.OPTION_LONG_BINDPWD,
+ "--"+ToolConstants.OPTION_LONG_BINDPWD_FILE,
+ "--"+parser.forceOnErrorArg.getLongIdentifier(),
+ ae.getMessageObject().toString());
+ throw new ApplicationException(ae.getType(), msg, ae);
}
else
{
diff --git a/opendj-sdk/opends/src/messages/messages/admin_tool.properties b/opendj-sdk/opends/src/messages/messages/admin_tool.properties
index 2770742..84da0f0 100644
--- a/opendj-sdk/opends/src/messages/messages/admin_tool.properties
+++ b/opendj-sdk/opends/src/messages/messages/admin_tool.properties
@@ -165,14 +165,15 @@
references to it in the replicated servers. Note that to be able to remove \
remote references you must provide Global Administrator credentials using the \
%s and %s (or %s) options.%nContinuing uninstall as we are \
- on force on error mode.
+ on force on error mode.%n%n The error found was:%n%s
SEVERE_ERR_UNINSTALL_ERROR_UPDATING_REMOTE_NO_FORCE=This server is configured \
to replicate some of its Base DN's. There was an error retrieving the \
references to it in the replicated servers. Note that to be able to remove \
remote references you must provide Global Administrator credentials using the \
%s and %s (or %s) options.%nCheck that the connection parameters you \
provided are correct.%nIf you want to uninstall the server even when remote \
- references cannot be removed, you can use the %s option.
+ references cannot be removed, you can use the %s option.%n%n The error found \
+ was:%n%s
MILD_ERR_UNINSTALL_NOT_UPDATE_REMOTE_PROMPT=This server is configured \
to replicate some of its Base DN's. There was an error retrieving the \
references to it in the replicated servers.%nDo you want to continue?
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/QuickSetupCli.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/QuickSetupCli.java
index 047e081..6ac830d 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/QuickSetupCli.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/QuickSetupCli.java
@@ -22,11 +22,14 @@
* CDDL HEADER END
*
*
- * Copyright 2008 Sun Microsystems, Inc.
+ * Copyright 2008-2009 Sun Microsystems, Inc.
*/
package org.opends.quicksetup;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
import org.opends.quicksetup.util.ProgressMessageFormatter;
import org.opends.quicksetup.util.PlainTextProgressMessageFormatter;
import org.opends.quicksetup.util.Utils;
@@ -49,6 +52,9 @@
private UserData userData;
+ static private final Logger LOG =
+ Logger.getLogger(QuickSetupCli.class.getName());
+
/**
* Creates a QuickSetupCli instance.
* @param cliApp the application to be run
@@ -69,7 +75,7 @@
/**
* Parses the user data and prompts the user for data if required. If the
- * user provides all the required data it launches the Uninstaller.
+ * user provides all the required data it launches the application.
*
* @return the return code (SUCCESSFUL, CANCELLED, USER_DATA_ERROR,
* ERROR_ACCESSING_FILE_SYSTEM, ERROR_STOPPING_SERVER or BUG.
@@ -102,6 +108,7 @@
});
}
Thread appThread = new Thread(cliApp, "CLI Application");
+ LOG.log(Level.INFO, "Launching application");
appThread.start();
while (!Thread.State.TERMINATED.equals(appThread.getState())) {
try {
@@ -111,10 +118,12 @@
}
}
returnValue = cliApp.getReturnCode();
+ LOG.log(Level.INFO, "Application returnValue: "+returnValue);
if (returnValue == null) {
ApplicationException ue = cliApp.getRunError();
if (ue != null)
{
+ LOG.log(Level.INFO, "Application run error: "+ue, ue);
returnValue = ue.getType();
}
else
@@ -131,6 +140,7 @@
}
catch (UserDataException uude)
{
+ LOG.log(Level.SEVERE, "UserDataException: "+uude, uude);
System.err.println();
System.err.println(StaticUtils.wrapText(uude.getLocalizedMessage(),
Utils.getCommandLineMaxLineWidth()));
@@ -146,11 +156,18 @@
}
catch (ApplicationException ae)
{
+ LOG.log(Level.SEVERE, "ApplicationException: "+ae, ae);
System.err.println();
System.err.println(ae.getLocalizedMessage());
System.err.println();
returnValue = ae.getType();
}
+ catch (Throwable t)
+ {
+ LOG.log(Level.SEVERE, "Unexpected error: "+t, t);
+ returnValue = ReturnCode.UNKNOWN;
+ }
+ LOG.log(Level.INFO, "returnValue: "+returnValue.getReturnCode());
return returnValue;
}
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/BackgroundTask.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/BackgroundTask.java
index 91a9904..c027563 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/BackgroundTask.java
+++ b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/BackgroundTask.java
@@ -55,10 +55,10 @@
* @return An {@code Object} with information about the processing performed
* for this task, or {@code null} if no return value is needed.
*
- * @throws Exception exception that will be passed through the method
+ * @throws Throwable throwable that will be passed through the method
* backgroundTaskCompleted.
*/
- public abstract T processBackgroundTask() throws Exception;
+ public abstract T processBackgroundTask() throws Throwable;
diff --git a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/ServerController.java b/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/ServerController.java
index afd553c..44ef134 100644
--- a/opendj-sdk/opends/src/quicksetup/org/opends/quicksetup/util/ServerController.java
+++ b/opendj-sdk/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