From 0138b5924ff14ef709398bf878dbb9bf2a0b7c33 Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Wed, 23 Sep 2026 13:05:17 +0000
Subject: [PATCH] [#1030] Keep the setup log out of the way of start-ds, and say when it is gone (#1032)
---
opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/SetupLauncher.java | 42 ++++++++++++++++++++++++++++++++++++------
1 files changed, 36 insertions(+), 6 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/SetupLauncher.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/SetupLauncher.java
index ff6820b..32f91fe 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/SetupLauncher.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/SetupLauncher.java
@@ -13,6 +13,7 @@
*
* Copyright 2008-2010 Sun Microsystems, Inc.
* Portions Copyright 2014-2016 ForgeRock AS.
+ * Portions Copyright 2026 3A Systems, LLC.
*/
package org.opends.quicksetup.installer;
@@ -22,6 +23,8 @@
import static com.forgerock.opendj.util.StaticUtils.registerBcProvider;
+import java.io.File;
+
import org.forgerock.i18n.LocalizableMessage;
import org.opends.quicksetup.CliApplication;
import org.opends.quicksetup.Installation;
@@ -65,7 +68,7 @@
* @param args the arguments passed by the command lines.
*/
public SetupLauncher(String[] args) {
- super(args, LOG_FILE_PREFIX);
+ super(args, LOG_FILE_PREFIX, instanceLogsDirectory());
if (System.getProperty(PROPERTY_SCRIPT_NAME) == null)
{
System.setProperty(PROPERTY_SCRIPT_NAME, Installation.getSetupFileName());
@@ -73,6 +76,32 @@
initializeParser();
}
+ /**
+ * The {@code logs/} directory of the instance being set up, where the setup log is kept.
+ * <p>
+ * The launcher scripts point {@code java.io.tmpdir} at {@code <instance>/tmp}, the scratch
+ * space of every tool, which {@code start-ds} - run by setup itself to start the server -
+ * used to sweep clean (issue #1030). The log of a failed setup belongs next to the server's
+ * own logs instead, where {@code server.out} tells the other half of the story.
+ * <p>
+ * Neither the directory nor the log is created here: {@link Launcher#getTempLogFile()}
+ * creates both when an install is about to run, so that a road which installs nothing -
+ * {@code setup --help} on a package whose instance directory is not laid down yet, for one -
+ * leaves nothing behind.
+ *
+ * @return the logs directory of the instance, or {@code null} when the launcher is not
+ * running from an installation and the OS temporary directory has to do.
+ */
+ private static File instanceLogsDirectory()
+ {
+ final String installPath = Utils.getInstallPathFromClasspath();
+ if (installPath == null)
+ {
+ return null;
+ }
+ return new File(Utils.getInstancePathFromInstallPath(installPath), Installation.LOGS_PATH_RELATIVE);
+ }
+
/** Initialize the contents of the argument parser. */
protected void initializeParser()
{
@@ -109,7 +138,7 @@
else if (isCli())
{
Utils.checkJavaVersion();
- System.exit(InstallDS.mainCLI(args, tempLogFile));
+ System.exit(InstallDS.mainCLI(args, this::getTempLogFile));
}
else
{
@@ -121,7 +150,7 @@
if (exitCode != 0) {
guiLaunchFailed();
Utils.checkJavaVersion();
- System.exit(InstallDS.mainCLI(args, tempLogFile));
+ System.exit(InstallDS.mainCLI(args, this::getTempLogFile));
}
}
}
@@ -144,9 +173,10 @@
@Override
protected void guiLaunchFailed() {
- System.err.println(
- tempLogFile.isEnabled() ? INFO_SETUP_LAUNCHER_GUI_LAUNCHED_FAILED_DETAILS.get(tempLogFile.getPath())
- : INFO_SETUP_LAUNCHER_GUI_LAUNCHED_FAILED.get());
+ // No log is named here: none exists yet, and creating one to name would leave it behind on
+ // every command line road that installs nothing (issue #1030). The reason the GUI failed
+ // goes into the log of the install that follows, and a failed install names that log.
+ System.err.println(INFO_SETUP_LAUNCHER_GUI_LAUNCHED_FAILED.get());
}
@Override
--
Gitblit v1.10.0