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