From 7f05a9ab7fc5f94bcf7e009667cbf1d9016b03e7 Mon Sep 17 00:00:00 2001 From: Andrew Purtell Date: Fri, 1 May 2026 15:44:50 -0700 Subject: [PATCH] PHOENIX-7819 HighAvailabilityGroup.URLS inner Set must be thread-safe --- .../java/org/apache/phoenix/jdbc/HighAvailabilityGroup.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phoenix-core-client/src/main/java/org/apache/phoenix/jdbc/HighAvailabilityGroup.java b/phoenix-core-client/src/main/java/org/apache/phoenix/jdbc/HighAvailabilityGroup.java index 5e522db88a5..3a4899f5501 100644 --- a/phoenix-core-client/src/main/java/org/apache/phoenix/jdbc/HighAvailabilityGroup.java +++ b/phoenix-core-client/src/main/java/org/apache/phoenix/jdbc/HighAvailabilityGroup.java @@ -25,7 +25,6 @@ import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; -import java.util.HashSet; import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -279,7 +278,8 @@ public static HAURLInfo getUrlInfo(String url, Properties properties) throws SQL } HAURLInfo haurlInfo = new HAURLInfo(name, principal, additionalJDBCParams); HAGroupInfo info = getHAGroupInfo(url, properties); - URLS.computeIfAbsent(info, haGroupInfo -> new HashSet<>()).add(haurlInfo); + // Multiple threads can concurrently call this code path with the same HAGroupInfo. + URLS.computeIfAbsent(info, haGroupInfo -> ConcurrentHashMap.newKeySet()).add(haurlInfo); return haurlInfo; }