You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2016/03/16 10:22:51 UTC

kylin git commit: KYLIN-1497 make three .getInstance thread safe

Repository: kylin
Updated Branches:
  refs/heads/master acaaaaa5e -> 2f31d30f7


KYLIN-1497 make three <class>.getInstance thread safe

Signed-off-by: Li Yang <li...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/2f31d30f
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/2f31d30f
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/2f31d30f

Branch: refs/heads/master
Commit: 2f31d30f75098979c74bb4341d367bb0fd225efc
Parents: acaaaaa
Author: John Zhao <yu...@ebay.com>
Authored: Tue Mar 15 15:03:54 2016 -0700
Committer: Li Yang <li...@apache.org>
Committed: Wed Mar 16 17:22:34 2016 +0800

----------------------------------------------------------------------
 .../java/org/apache/kylin/dict/DictionaryManager.java    | 10 ++++++----
 .../org/apache/kylin/dict/lookup/SnapshotManager.java    | 10 ++++++----
 .../java/org/apache/kylin/job/dao/ExecutableDao.java     | 11 ++++++-----
 3 files changed, 18 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/2f31d30f/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
----------------------------------------------------------------------
diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
index ce04b55..b7c95da 100644
--- a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
+++ b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
@@ -62,10 +62,12 @@ public class DictionaryManager {
     public static DictionaryManager getInstance(KylinConfig config) {
         DictionaryManager r = CACHE.get(config);
         if (r == null) {
-            r = new DictionaryManager(config);
-            CACHE.put(config, r);
-            if (CACHE.size() > 1) {
-                logger.warn("More than one singleton exist");
+            synchronized (DictionaryManager.class) {
+                r = CACHE.get(config);
+                if (r == null) {
+                    r = new DictionaryManager(config);
+                    CACHE.put(config, r);
+                }
             }
         }
         return r;

http://git-wip-us.apache.org/repos/asf/kylin/blob/2f31d30f/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotManager.java
----------------------------------------------------------------------
diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotManager.java b/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotManager.java
index 53bf60d..1123c2d 100644
--- a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotManager.java
+++ b/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotManager.java
@@ -44,10 +44,12 @@ public class SnapshotManager {
     public static SnapshotManager getInstance(KylinConfig config) {
         SnapshotManager r = SERVICE_CACHE.get(config);
         if (r == null) {
-            r = new SnapshotManager(config);
-            SERVICE_CACHE.put(config, r);
-            if (SERVICE_CACHE.size() > 1) {
-                logger.warn("More than one singleton exist");
+            synchronized (SnapshotManager.class) {
+                r = SERVICE_CACHE.get(config);
+                if (r == null) {
+                    r = new SnapshotManager(config);
+                    SERVICE_CACHE.put(config, r);
+                }
             }
         }
         return r;

http://git-wip-us.apache.org/repos/asf/kylin/blob/2f31d30f/core-job/src/main/java/org/apache/kylin/job/dao/ExecutableDao.java
----------------------------------------------------------------------
diff --git a/core-job/src/main/java/org/apache/kylin/job/dao/ExecutableDao.java b/core-job/src/main/java/org/apache/kylin/job/dao/ExecutableDao.java
index 1869ca7..d063ee7 100644
--- a/core-job/src/main/java/org/apache/kylin/job/dao/ExecutableDao.java
+++ b/core-job/src/main/java/org/apache/kylin/job/dao/ExecutableDao.java
@@ -49,12 +49,13 @@ public class ExecutableDao {
     public static ExecutableDao getInstance(KylinConfig config) {
         ExecutableDao r = CACHE.get(config);
         if (r == null) {
-            r = new ExecutableDao(config);
-            CACHE.put(config, r);
-            if (CACHE.size() > 1) {
-                logger.warn("More than one singleton exist");
+            synchronized (ExecutableDao.class) {
+                r = CACHE.get(config);
+                if (r == null) {
+                    r = new ExecutableDao(config);
+                    CACHE.put(config, r);
+                }
             }
-
         }
         return r;
     }