RFR: 8302845: Replace finalizer usage in JNDI DNS provider with Cleaner [v2]
Aleksei Efimov
aefimov at openjdk.org
Mon May 8 15:15:23 UTC 2023
On Sat, 6 May 2023 12:47:21 GMT, Alan Bateman <alanb at openjdk.org> wrote:
>> src/jdk.naming.dns/share/classes/com/sun/jndi/dns/DnsClient.java line 165:
>>
>>> 163: // when this DNS client becomes phantom reachable
>>> 164: Selector sel = udpChannelSelector;
>>> 165: CleanerFactory.cleaner().register(this, () -> {
>>
>> I believe this is not quite right. The Cleanable returned by the `register` method should be saved in a final field. And close() below should call `Cleanable::clean` instead of `udpChannelSelector.close()`
>
>> I believe this is not quite right. The Cleanable returned by the `register` method should be saved in a final field. And close() below should call `Cleanable::clean` instead of `udpChannelSelector.close()`
>
> Selector::close is idempotent so it doesn't really matter but your approach would mean the cleanable is deregistered when the API is used correctly, which is good thing.
Thanks for the comments, implemented suggestions in 3a139b272b25d52b8be9593cee3aec3f373c12ff - new final field is added to save `Cleaner.Cleanable` instance for later use in `DnsClient::close` to close the selector and deregister the cleanable action.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13837#discussion_r1187563091
More information about the core-libs-dev
mailing list