On Mon, 31 Jul 2023 16:52:00 GMT, Andy Goryachev <ango...@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.
>
> modules/javafx.graphics/src/main/java/com/sun/glass/utils/NativeLibLoader.java
>  line 311:
> 
>> 309:                  FileLock fileLock = fileChannel.lock()) {
>> 310:                 try {
>> 311:                     if (!Files.exists(path)) {
> 
> This code would fail if the target file exists but has a 0 length, or any 
> length other that the actual resource length, or with the right length but 
> wrong content.  
> Do we want to address these scenarios?

This is a different type of a problem, that imho should be addressed as well, 
but in a separate issue which also contains a test strategy. This is something 
that requires a hash-based solution, but it is something that needs to be done 
with great care, so I personally wouldn't rush this into this PR (as it might 
cause criticial regression if not done correctly).

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1188#discussion_r1280187329

Reply via email to