mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 22:34:27 +02:00
8302983: ZoneRulesProvider.registerProvider() twice will remove provider
Reviewed-by: naoto
This commit is contained in:
parent
82ccfe3a21
commit
f83e7302c1
2 changed files with 70 additions and 24 deletions
|
@ -316,10 +316,11 @@ public abstract class ZoneRulesProvider {
|
|||
Objects.requireNonNull(zoneId, "zoneId");
|
||||
ZoneRulesProvider old = ZONES.putIfAbsent(zoneId, provider);
|
||||
if (old != null) {
|
||||
// restore old state
|
||||
ZONES.put(zoneId, old);
|
||||
provider.provideZoneIds().stream()
|
||||
.forEach(id -> ZONES.remove(id, provider));
|
||||
if (!old.equals(provider)) {
|
||||
// restore old state
|
||||
ZONES.put(zoneId, old);
|
||||
provider.provideZoneIds().forEach(id -> ZONES.remove(id, provider));
|
||||
}
|
||||
throw new ZoneRulesException(
|
||||
"Unable to register zone as one already registered with that ID: " + zoneId +
|
||||
", currently loading from provider: " + provider);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue