On Thu, 24 Sep 2026 01:58:17 GMT, moseoh <[email protected]> wrote:

>> `CLDRTimeZoneNameProviderImpl.getDisplayNameArray()` modifies the array
>> cached by `LocaleResources` when filling in missing time zone names.
>> As a result, names derived for a parent locale can be reused by a later
>> lookup for a child locale, making the result depend on lookup order.
>> 
>> This change copies the array before updating the zone ID and deriving
>> fallback names, leaving the cached array unchanged.
>> 
>> `TimeZoneNameOrderTest` compares a direct lookup with a lookup made after
>> querying the parent locale. The two runs use separate JVMs so that they
>> do not share cached state.
>> 
>> `TimeZoneNameConcurrencyTest` compares concurrent first lookups with
>> sequential lookups in a fresh JVM. It is included to cover the race seen
>> in 11u/17u/21u; it passes on mainline both before and after the fix.
>> 
>> Tested with jtreg sun/util, java/util/TimeZone and java/util/Locale on 
>> linux-x64.
>> 
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> moseoh has updated the pull request incrementally with one additional commit 
> since the last revision:
> 
>   Check names returned by concurrent first lookups

Thanks for the review and for sponsoring. Unless someone else already plans to, 
I'd like to do the backports to 21u, 17u and 11u once the fix has had some time 
in mainline.

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

PR Comment: https://git.openjdk.org/jdk/pull/32867#issuecomment-5883437761

Reply via email to