RFR: 8308116: jdk.test.lib.compiler.InMemoryJavaCompiler.compile does not close files [v2]

Andrey Turbanov aturbanov at openjdk.org
Thu May 18 09:49:52 UTC 2023


On Wed, 17 May 2023 07:15:04 GMT, Axel Boldt-Christmas <aboldtch at openjdk.org> wrote:

>> jdk.test.lib.compiler.InMemoryJavaCompiler.compile(String className, CharSequence sourceCode, String... options) creates a JavaFileManager but fails to close it after the CompilationTask is completed, leaving the file descriptors open until reference processing kicks in.
>> 
>> Graph below shows number of open file descriptors before and after this patch for a program which compiles dummy classes in a loop. 
>> <img width="1116" alt="Before and after" src="https://github.com/openjdk/jdk/assets/1139284/1ecfb32a-735b-4765-bcca-81f67a4c9816">
>> 
>> Testing: GHA and Oracle CI tier1-3. Tests using jdk.test.lib.compiler.InMemoryJavaCompiler also tested locally.
>
> Axel Boldt-Christmas has updated the pull request incrementally with three additional commits since the last revision:
> 
>  - Feedback: Throw RuntimeException in close
>  - Feedback: Add @Override and Callable
>  - Feedback: Update Copyright years

test/lib/jdk/test/lib/compiler/InMemoryJavaCompiler.java line 182:

> 180:         MemoryJavaFileObject file = new MemoryJavaFileObject(className, sourceCode);
> 181:         try (CloseableCompilationTask task = getCompilationTask(file, options)) {
> 182:             if(!task.call()) {

Suggestion:

            if (!task.call()) {

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

PR Review Comment: https://git.openjdk.org/jdk/pull/14001#discussion_r1197622375


More information about the hotspot-runtime-dev mailing list