RFR: 8287104: AddressChangeListener thread inherits CCL and can cause memory leak for webapp-servers [v2]

Daniel Fuchs dfuchs at openjdk.java.net
Tue May 24 09:45:44 UTC 2022


On Mon, 23 May 2022 12:31:40 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:

>> Can I please get a review of this change which addresses https://bugs.openjdk.java.net/browse/JDK-8287104?
>> 
>> The change in this commit now uses an `InnocuousThread` to create a thread with `null` context classloader. The `Runnable` task of this thread just invokes a native method through JNI to be notified of IP addresses change of the host. As such any specific thread context classloader isn't necessary in this thread.
>> 
>> Additionally, this commit does some minor changes like making the `lock` member variable `final` and also marking the `changed` member variable as `volatile`. These changes aren't necessary for this fix, but I think would be good to have while we are changing this part of the code.
>> 
>> Finally, the thread that we create here, now has a specific name `Net-address-change-listener` instead of the usual system wide auto-generated name.
>> 
>> No new tests have been added for this change. Existing tier1, tier2 and tier3 tests have been run and no related failures have been noticed.
>
> Jaikiran Pai has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Aleksei's review suggestion - use a better Thread name

src/java.base/windows/classes/sun/net/dns/ResolverConfigurationImpl.java line 49:

> 47:     // Addresses have changed. We default to true to make sure we
> 48:     // resolve the first time it is requested.
> 49:     private static volatile boolean changed = true;

The field `changed` is only accessed when `synchronized` on `lock` - except for this initialization line here. I wonder if the volatile is actually needed. A better fix might be to rename it to `nochanges` and revert its semantics, which would allow to leave it initialized to false.  Or maybe just revert changes to line 49.
Otherwise looks good to me.

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

PR: https://git.openjdk.java.net/jdk/pull/8827


More information about the net-dev mailing list