On Mon, 12 May 2025 19:53:35 GMT, Volkan Yazici <vyaz...@openjdk.org> wrote:

>> `ServerUdsChannelHolder` is introduced to manage the life cycle of a 
>> `ServerSocketChannel` created using Unix domain sockets (UDS) in a 
>> thread-safe manner.
>> 
>> ### Testing
>> 
>> Changes can be tested as follows:
>> 
>> 
>> make build-microbenchmark
>> build/linux-x64/jdk/bin/java \
>>   -jar build/linux-x64/images/test/micro/benchmarks.jar \
>>   -f 1 -wi 1 -i 1 -t 2 \
>>   "(SocketChannelConnectionSetup|UnixSocketChannelReadWrite)"
>> 
>> 
>> ### Background
>> 
>> A UDS need to be pointed to a _non-existent_ file, which is to be created by 
>> `bind()`. The created file needs to be deleted as a part of the clean-up at 
>> exit. When tests employing UDS run in parallel, failures can happen at 
>> multiple places:
>> 
>> - `bind()` can fail, if the file is already created by another thread
>> - the clean-up of the socket file can fail, if the file is already deleted
>>   - reported for `SocketChannelConnectionSetup` in 
>> [8350915](https://bugs.openjdk.org/browse/JDK-8350915)
>>   - reported for `UnixSocketChannelReadWrite` in 
>> [8351601](https://bugs.openjdk.org/browse/JDK-8351601)
>> - the clean-up of the socket file parent directory can fail, if not all 
>> threads deleted their socket files, and hence, the folder is not empty
>>   - reported for in `SocketChannelConnectionSetup` in 
>> [8354024](https://bugs.openjdk.org/browse/JDK-8354024)
>> 
>> This PR introduces `ServerUdsChannelHolder` utility to manage the life cycle 
>> of a UDS and avoids above shared issues by:
>> - using a dedicated (temporary and unique) parent folder for the socket
>> - encapsulating the termination logic (i.e., closing the socket, deleting 
>> the socket file and its (dedicated) parent folder) in `AutoCloseable::close`
>
> Volkan Yazici 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 six additional 
> commits since the last revision:
> 
>  - Merge remote-tracking branch 'upstream/master' into jmh-unix-sock
>  - Remove redundant `volatile` modifier
>  - Improve UDS file path obtain
>  - Simplify UDS clean-up logic
>  - Fix copyright year
>  - 8354024: [JMH] Create ephemeral UnixDomainSocketAddress provider with 
> thread-safe close semantics

@vy 
Your change (at version 07675a43a4be8d203cc51f284ce80bd6619f08f5) is now ready 
to be sponsored by a Committer.

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

PR Comment: https://git.openjdk.org/jdk/pull/24568#issuecomment-2875396718

Reply via email to