From 3483e491f6b99ffe29fb9bffa06dbd9284df0dcf Mon Sep 17 00:00:00 2001 From: zenith <46958942+cugwhzenith@users.noreply.github.com> Date: Mon, 5 Jan 2026 18:17:51 +0800 Subject: [PATCH] Fix thread-safety in getAggregatedCatalog method Fix thread-safety in getAggregatedCatalog method by using temporary variable --- .../openstack/identity/v2/domain/KeystoneAccess.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/openstack4j/openstack/identity/v2/domain/KeystoneAccess.java b/core/src/main/java/org/openstack4j/openstack/identity/v2/domain/KeystoneAccess.java index d736b314c..c9e2620a3 100644 --- a/core/src/main/java/org/openstack4j/openstack/identity/v2/domain/KeystoneAccess.java +++ b/core/src/main/java/org/openstack4j/openstack/identity/v2/domain/KeystoneAccess.java @@ -65,13 +65,14 @@ public SortedSetMultimap getAggregatedCatalog() { if (aggregatedCatalog == null) { synchronized(this) { if (aggregatedCatalog == null) { - aggregatedCatalog = TreeMultimap.create(); + SortedSetMultimap tmpAggregatedCatalog = TreeMultimap.create(); for (AccessService sc : serviceCatalog) { String nameKey = TYPE_WITHOUT_VERSION.apply(sc.getName()); String typeKey = TYPE_WITHOUT_VERSION.apply(sc.getType()); - aggregatedCatalog.put(nameKey, sc); - aggregatedCatalog.put(typeKey, sc); + tmpAggregatedCatalog.put(nameKey, sc); + tmpAggregatedCatalog.put(typeKey, sc); } + this.aggregatedCatalog = tmpAggregatedCatalog; } } }