On Fri, 24 Nov 2023 10:34:02 GMT, Stefan Karlsson <stef...@openjdk.org> wrote:

> Tests using ProcessTools.executeProcess gets the following output written to 
> stdout:
> [2023-11-24T09:58:16.797540608Z] Gathering output for process 2517117
> [2023-11-24T09:58:23.070781345Z] Waiting for completion for process 2517117
> [2023-11-24T09:58:23.071045055Z] Waiting for completion finished for process 
> 2517117
> 
> This might be good for some use cases and debugging, but some tests spawns a 
> large number of processes and for those this output fills up the log files.
> 
> I propose that we add a way to turn of this output for tests where we find 
> this output to be too noisy.

Perhaps this would help improve/fix the log flooding:


diff --git a/test/lib/jdk/test/lib/process/OutputBuffer.java 
b/test/lib/jdk/test/lib/process/OutputBuffer.java
index 3741ccbe2ff..02aedf29f6a 100644
--- a/test/lib/jdk/test/lib/process/OutputBuffer.java
+++ b/test/lib/jdk/test/lib/process/OutputBuffer.java
@@ -120,6 +120,7 @@ public String get() {
     private final StreamTask outTask;
     private final StreamTask errTask;
     private final Process p;
+    private volatile Integer processExitCode; // null represents process 
hasn't yet exited
 
     private final void logProgress(String state) {
         System.out.println("[" + Instant.now().toString() + "] " + state
@@ -146,14 +147,18 @@ public String getStderr() {
 
     @Override
     public int getExitValue() {
+      Integer exitCode = this.processExitCode;
+      if (exitCode != null) {
+        return exitCode;
+      }
       try {
           logProgress("Waiting for completion");
           boolean aborted = true;
           try {
-              int result = p.waitFor();
+              processExitCode = exitCode = p.waitFor();
               logProgress("Waiting for completion finished");
               aborted = false;
-              return result;
+              return exitCode;
           } finally {
               if (aborted) {
                   logProgress("Waiting for completion FAILED");


Other than a quick local test run, I haven't tested it for anything else. It 
did improve the situation in one of my test and it now only logs it once. In 
the setup that you are seeing this large amount of logging, would you be able 
to see if this change helps there too?

-------------

PR Comment: https://git.openjdk.org/jdk/pull/16807#issuecomment-1825932899

Reply via email to