RFR: 8304818: Prune HttpURLConnection cache when corresponding Authenticator is garbage collected [v9]

Daniel Fuchs dfuchs at openjdk.org
Wed Apr 12 12:02:42 UTC 2023


On Wed, 12 Apr 2023 11:08:56 GMT, Michael McMahon <michaelm at openjdk.org> wrote:

>> Hi,
>> 
>> Can I get a review for this please? This change uses a Cleaner to check when java.net.Authenticator instances become unreachable, and then prunes the authentication cache for entries that correspond to that Authenticator and therefore cannot be used again. This stops the authentication cache from growing in size unbounded. Note, this only happens in the probably unusual case where more than one Authenticator object is used. Normally there is no reason to use more than one instance.
>> 
>> Thanks,
>> Michael.
>
> Michael McMahon has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - error in test
>  - Jai's review

src/java.base/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java line 229:

> 227:         this.realm = realm;
> 228:         this.path = null;
> 229:         this.authcache = acache == null ? defCache : acache;

Do we really need that field? Now that AuthCacheValue instances are held in separate caches, there should be no need to have a field referring to the authenticator/cache in the auth value.
This let me thinks that some more refactoring could further simplify everything.
Having the value point to the cache in which it's been added seems wrong.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/13159#discussion_r1164028256


More information about the net-dev mailing list