RFR: 8307536: FileAlreadyExistsException from NativeLibLoader when running concurrent applications with empty cache
Kevin Rushforth
kcr at openjdk.org
Mon Jul 31 14:58:52 UTC 2023
On Fri, 28 Jul 2023 09:11:07 GMT, Jose Pereda <jpereda at openjdk.org> wrote:
> This PR adds a file lock to the cache directory, allowing access from multiple processes (that is, from more than one JVM) to that directory.
>
> This helps solving the issue where the cache is empty or doesn't exist yet, and two JavaFX applications start at the same time, and both try to copy the same native libraries to the same cache.
>
> No tests have been added to the PR though, since this requires a complex scenario: building the SDK and publishing to local Maven repository, creating two simple JavaFX applications that use those artifacts, using a temporary folder for cache (via `javafx.cachedir`, and launching in parallel both applications.
>
> I've tested successfully such scenario on Linux, Mac and Windows.
Marked as reviewed by kcr (Lead).
Thanks for the additional explanation. One more thing I realized is that there won't ever be a conflict between an old (without the fix) and a new (with the fix) JavaFX release, because the version number is included in the directory name. So this fix looks good to me.
-------------
PR Review: https://git.openjdk.org/jfx/pull/1188#pullrequestreview-1554998526
PR Comment: https://git.openjdk.org/jfx/pull/1188#issuecomment-1658539339
More information about the openjfx-dev
mailing list