From 457c2b776f6d66b0269aab34ad2ce6dd49de8e37 Mon Sep 17 00:00:00 2001 From: lucifer4j <97942130+lucifer4j@users.noreply.github.com> Date: Sat, 8 Jul 2023 10:27:39 +0530 Subject: [PATCH] Fix double-checked locking in ConnectionFactory (#11014) The `_defaultTransport` in `ConnectionFactory` is created using double-checked locking. https://github.com/apache/pinot/blob/03b9d4a708e6d09838e902857ebe1f255ced4ba1/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/ConnectionFactory.java#L211-L222 However, the current implementation is buggy as described in https://rules.sonarsource.com/java/RSPEC-2168/. To fix it, make the field `volatile`. --- .../main/java/org/apache/pinot/client/ConnectionFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/ConnectionFactory.java b/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/ConnectionFactory.java index 44206f6eb86..1ed65dd2ebc 100644 --- a/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/ConnectionFactory.java +++ b/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/ConnectionFactory.java @@ -28,7 +28,7 @@ * Creates connections to Pinot, given various initialization methods. */ public class ConnectionFactory { - private static PinotClientTransport _defaultTransport; + private static volatile PinotClientTransport _defaultTransport; private ConnectionFactory() { }