This is an automated email from the ASF dual-hosted git repository.

vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git


The following commit(s) were added to refs/heads/master by this push:
     new 4ccf5ca  Make SparkHandlerImpl singletone thread-safe
4ccf5ca is described below

commit 4ccf5caea070580ae030074dc4c213fd67d73255
Author: Vladimir Sitnikov <sitnikov.vladi...@gmail.com>
AuthorDate: Wed Feb 6 21:15:47 2019 +0300

    Make SparkHandlerImpl singletone thread-safe
---
 .../org/apache/calcite/adapter/spark/SparkHandlerImpl.java    | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git 
a/spark/src/main/java/org/apache/calcite/adapter/spark/SparkHandlerImpl.java 
b/spark/src/main/java/org/apache/calcite/adapter/spark/SparkHandlerImpl.java
index e73b4bd..811a047 100644
--- a/spark/src/main/java/org/apache/calcite/adapter/spark/SparkHandlerImpl.java
+++ b/spark/src/main/java/org/apache/calcite/adapter/spark/SparkHandlerImpl.java
@@ -47,7 +47,11 @@ public class SparkHandlerImpl implements 
CalcitePrepare.SparkHandler {
   private final JavaSparkContext sparkContext =
       new JavaSparkContext("local[1]", "calcite");
 
-  private static SparkHandlerImpl instance;
+  /** Thread-safe holder */
+  private static class Holder {
+    private static final SparkHandlerImpl INSTANCE = new SparkHandlerImpl();
+  }
+
   private static final File CLASS_DIR = new File("target/classes");
 
   /** Creates a SparkHandlerImpl. */
@@ -73,10 +77,7 @@ public class SparkHandlerImpl implements 
CalcitePrepare.SparkHandler {
    * this via reflection. */
   @SuppressWarnings("UnusedDeclaration")
   public static CalcitePrepare.SparkHandler instance() {
-    if (instance == null) {
-      instance = new SparkHandlerImpl();
-    }
-    return instance;
+    return Holder.INSTANCE;
   }
 
   public RelNode flattenTypes(RelOptPlanner planner, RelNode rootRel,

Reply via email to