> `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 ------------- Changes: - all: https://git.openjdk.org/jdk/pull/32867/files - new: https://git.openjdk.org/jdk/pull/32867/files/f47b0a3a..a239a70f Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=32867&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=32867&range=00-01 Stats: 14 lines in 1 file changed: 12 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/32867.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/32867/head:pull/32867 PR: https://git.openjdk.org/jdk/pull/32867
