You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2022/12/09 22:58:19 UTC

[maven-mvnd] branch master updated: Fix daemon JVM start options (follow-up to #749) (#751)

This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-mvnd.git


The following commit(s) were added to refs/heads/master by this push:
     new bc021d05 Fix daemon JVM start options (follow-up to #749) (#751)
bc021d05 is described below

commit bc021d05772c2de2cb75b47b3aa58863c2a044f0
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Fri Dec 9 23:58:13 2022 +0100

    Fix daemon JVM start options (follow-up to #749) (#751)
---
 .../org/mvndaemon/mvnd/client/DaemonConnector.java | 27 ++++++++++++++--------
 .../mvndaemon/mvnd/client/DaemonParameters.java    |  4 ++--
 .../org/mvndaemon/mvnd/common/Environment.java     |  4 ++++
 3 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonConnector.java b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonConnector.java
index 70d3d933..05558d13 100644
--- a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonConnector.java
+++ b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonConnector.java
@@ -29,6 +29,7 @@ import java.nio.channels.SocketChannel;
 import java.nio.file.DirectoryStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.StandardOpenOption;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -378,33 +379,39 @@ public class DaemonConnector {
                 args.add("-Xss" + threadStackSize);
             }
 
-            Environment.MVND_HOME.addCommandLineOption(args, mvndHome.toString());
+            Environment.MVND_HOME.addSystemProperty(args, mvndHome.toString());
             args.add("-Dmaven.home=" + mvndHome.resolve("mvn"));
             args.add("-Dmaven.conf=" + mvndHome.resolve("mvn/conf"));
 
-            Environment.MVND_JAVA_HOME.addCommandLineOption(
+            Environment.MVND_JAVA_HOME.addSystemProperty(
                     args, parameters.javaHome().toString());
-            Environment.LOGBACK_CONFIGURATION_FILE.addCommandLineOption(
+            Environment.LOGBACK_CONFIGURATION_FILE.addSystemProperty(
                     args, parameters.logbackConfigurationPath().toString());
-            Environment.MVND_ID.addCommandLineOption(args, daemonId);
-            Environment.MVND_DAEMON_STORAGE.addCommandLineOption(
+            Environment.MVND_ID.addSystemProperty(args, daemonId);
+            Environment.MVND_DAEMON_STORAGE.addSystemProperty(
                     args, parameters.daemonStorage().toString());
-            Environment.MVND_REGISTRY.addCommandLineOption(
+            Environment.MVND_REGISTRY.addSystemProperty(
                     args, parameters.registry().toString());
-            Environment.MVND_SOCKET_FAMILY.addCommandLineOption(
+            Environment.MVND_SOCKET_FAMILY.addSystemProperty(
                     args,
                     parameters
                             .socketFamily()
                             .orElseGet(() -> getJavaVersion() >= 16.0f ? SocketFamily.unix : SocketFamily.inet)
                             .toString());
-            parameters.discriminatingCommandLineOptions(args);
+            parameters.discriminatingSystemProperties(args);
             args.add(MavenDaemon.class.getName());
             command = String.join(" ", args);
 
             LOGGER.debug(
                     "Starting daemon process: id = {}, workingDir = {}, daemonArgs: {}", daemonId, workingDir, command);
-            ProcessBuilder.Redirect redirect = ProcessBuilder.Redirect.appendTo(
-                    parameters.daemonOutLog(daemonId).toFile());
+            Path daemonOutLog = parameters.daemonOutLog(daemonId);
+            Files.writeString(
+                    daemonOutLog,
+                    "Starting daemon process: id = " + daemonId + ", workingDir = " + workingDir + ", daemonArgs: "
+                            + command,
+                    StandardOpenOption.CREATE,
+                    StandardOpenOption.APPEND);
+            ProcessBuilder.Redirect redirect = ProcessBuilder.Redirect.appendTo(daemonOutLog.toFile());
             ProcessBuilder processBuilder = new ProcessBuilder();
             processBuilder
                     .environment()
diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java
index e0fc8b98..858975e5 100644
--- a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java
+++ b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java
@@ -96,8 +96,8 @@ public class DaemonParameters {
                 .filter(EnvValue::isSet);
     }
 
-    public void discriminatingCommandLineOptions(List<String> args) {
-        discriminatingValues().forEach(envValue -> envValue.envKey.addCommandLineOption(args, envValue.asString()));
+    public void discriminatingSystemProperties(List<String> args) {
+        discriminatingValues().forEach(envValue -> envValue.envKey.addSystemProperty(args, envValue.asString()));
     }
 
     public Path mvndHome() {
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java b/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java
index 9149eb8f..95cd046e 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java
@@ -420,6 +420,10 @@ public enum Environment {
         return property + "=" + type.normalize(value);
     }
 
+    public void addSystemProperty(Collection<String> args, String value) {
+        args.add("-D" + property + "=" + type.normalize(value));
+    }
+
     public void addCommandLineOption(Collection<String> args, String value) {
         if (!options.isEmpty()) {
             args.add(options.keySet().iterator().next());