RFR: 8364361: [process] java.lang.Process should implement Closeable [v23]
Roger Riggs
rriggs at openjdk.org
Mon Oct 27 18:34:57 UTC 2025
> The teardown of a Process launched by `ProcessBuilder` includes the closing of streams and ensuring the termination of the process is the responsibility of the caller. The `Process.close()` method provides a clear and obvious way to ensure all the streams are closed and the process terminated.
>
> The try-with-resources statement is frequently used to open streams and ensure they are closed on exiting the block. By implementing `AutoClosable.close()` the completeness of closing the streams and process termination can be done by try-with-resources.
>
> The actions of the `close()` method are to close each stream and destroy the process if it has not terminated.
Roger Riggs has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 32 additional commits since the last revision:
- Doc update to use "interrupted status" terminology in alignment with JDK-8370568.
- Merge branch 'master' into 8364361-process-autocloseable
- Corrected ProcessCloseTest to expect a racy result from "echo abc" and Process.close.
- "type" on Windows isn't what I'm looking for.
- Improve robustness of ProcessCloseTest:
Replace "cat <filename>" on Linux with "type" on Windows.
Replace "cat -" with builtin Child command, not a native program.
- Review comment updates to handle cases where stream close methods might
throw exceptions other then IOException and add them to the suppressed exceptions.
Update the spec and @implSpec to be clear about exception handling
and how the process is terminated with destroyForcibly.
- Adopt review suggestions for javadoc wording.
Refactor the utility method to wait for the process, return true on termination, false on interrupt.
Various updates to the test related to logging of output when a test fails.
- Incremental update to make it clear that if it is necessary
to forcibly destroy the process, close continues to wait for the
process to terminate.
- Merge branch 'master' into 8364361-process-autocloseable
- Modify close to waitFor process to exit.
If the waitFor is interrupted, destroy the process (forcibly).
Wait indefinately for the process to terminate.
Updated tests with exit status indicating waiting for termination
due to reduction in racy exits.
- ... and 22 more: https://git.openjdk.org/jdk/compare/3975b214...b919c57d
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/26649/files
- new: https://git.openjdk.org/jdk/pull/26649/files/10cf85d9..b919c57d
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=26649&range=22
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=26649&range=21-22
Stats: 23479 lines in 628 files changed: 13743 ins; 5630 del; 4106 mod
Patch: https://git.openjdk.org/jdk/pull/26649.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/26649/head:pull/26649
PR: https://git.openjdk.org/jdk/pull/26649
More information about the core-libs-dev
mailing list