You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2018/09/30 03:45:11 UTC

[kylin] branch master updated: KYLIN-3588, fix potentially duplicate putting in RemoveBlackoutRealizationsRule#getFilterImpl

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 974bf6f  KYLIN-3588, fix potentially duplicate putting in RemoveBlackoutRealizationsRule#getFilterImpl
974bf6f is described below

commit 974bf6f3a971d256e2a93a11942a87143e61db21
Author: tttMelody <24...@qq.com>
AuthorDate: Tue Sep 25 14:49:47 2018 +0800

    KYLIN-3588, fix potentially duplicate putting in RemoveBlackoutRealizationsRule#getFilterImpl
---
 .../routing/rules/RemoveBlackoutRealizationsRule.java     | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/query/src/main/java/org/apache/kylin/query/routing/rules/RemoveBlackoutRealizationsRule.java b/query/src/main/java/org/apache/kylin/query/routing/rules/RemoveBlackoutRealizationsRule.java
index c64f6da..278bb46 100644
--- a/query/src/main/java/org/apache/kylin/query/routing/rules/RemoveBlackoutRealizationsRule.java
+++ b/query/src/main/java/org/apache/kylin/query/routing/rules/RemoveBlackoutRealizationsRule.java
@@ -59,13 +59,16 @@ public class RemoveBlackoutRealizationsRule extends RoutingRule {
     private static IRealizationFilter getFilterImpl(KylinConfig conf) {
         IRealizationFilter filter = filters.get(conf);
         if (filter == null) {
-            try {
-                Class<? extends IRealizationFilter> clz = ClassUtil.forName(conf.getQueryRealizationFilter(), IRealizationFilter.class);
-                filter = clz.getConstructor(KylinConfig.class).newInstance(conf);
-            } catch (Exception e) {
-                throw new RuntimeException(e);
+            synchronized (RemoveBlackoutRealizationsRule.class) {
+                try {
+                    Class<? extends IRealizationFilter> clz = ClassUtil.forName(conf.getQueryRealizationFilter(),
+                            IRealizationFilter.class);
+                    filter = clz.getConstructor(KylinConfig.class).newInstance(conf);
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+                filters.put(conf, filter);
             }
-            filters.put(conf, filter);
         }
         return filter;
     }