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; }