minor, allow only clearCache for non-static listeners
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/c297f466 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/c297f466 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/c297f466 Branch: refs/heads/ranger Commit: c297f466ed2fbf850a4b44e68cee51f04b7c2545 Parents: 309c872 Author: lidongsjtu <lid...@apache.org> Authored: Tue Sep 5 20:39:10 2017 +0800 Committer: Hongbin Ma <m...@kyligence.io> Committed: Wed Sep 6 10:57:36 2017 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/cube/CubeDescManager.java | 5 --- .../java/org/apache/kylin/cube/CubeManager.java | 5 --- .../apache/kylin/dict/DictionaryManager.java | 5 --- .../kylin/job/execution/ExecutableManager.java | 5 --- .../apache/kylin/metadata/MetadataManager.java | 5 --- .../badquery/BadQueryHistoryManager.java | 5 --- .../kylin/metadata/cachesync/Broadcaster.java | 22 ++++++++++--- .../kylin/metadata/draft/DraftManager.java | 5 --- .../kylin/metadata/project/ProjectManager.java | 5 --- .../realization/RealizationRegistry.java | 4 --- .../metadata/cachesync/BroadcasterTest.java | 33 +++++++++++++++++--- .../kylin/storage/hybrid/HybridManager.java | 8 ++--- 12 files changed, 48 insertions(+), 59 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/c297f466/core-cube/src/main/java/org/apache/kylin/cube/CubeDescManager.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeDescManager.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeDescManager.java index 6635366..b1ac6e6 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/CubeDescManager.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeDescManager.java @@ -94,11 +94,6 @@ public class CubeDescManager { CACHE.clear(); } - public static void clearCache(KylinConfig kylinConfig) { - if (kylinConfig != null) - CACHE.remove(kylinConfig); - } - // ============================================================================ private KylinConfig config; http://git-wip-us.apache.org/repos/asf/kylin/blob/c297f466/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java index 043993c..f6de446 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java @@ -124,11 +124,6 @@ public class CubeManager implements IRealizationProvider { CACHE.clear(); } - public static void clearCache(KylinConfig kylinConfig) { - if (kylinConfig != null) - CACHE.remove(kylinConfig); - } - // ============================================================================ private KylinConfig config; http://git-wip-us.apache.org/repos/asf/kylin/blob/c297f466/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 857ee30..1628f4e 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 @@ -83,11 +83,6 @@ public class DictionaryManager { CACHE.clear(); } - public static void clearCache(KylinConfig kylinConfig) { - if (kylinConfig != null) - CACHE.remove(kylinConfig); - } - // ============================================================================ private KylinConfig config; http://git-wip-us.apache.org/repos/asf/kylin/blob/c297f466/core-job/src/main/java/org/apache/kylin/job/execution/ExecutableManager.java ---------------------------------------------------------------------- diff --git a/core-job/src/main/java/org/apache/kylin/job/execution/ExecutableManager.java b/core-job/src/main/java/org/apache/kylin/job/execution/ExecutableManager.java index 0439ddd..bab8c30 100644 --- a/core-job/src/main/java/org/apache/kylin/job/execution/ExecutableManager.java +++ b/core-job/src/main/java/org/apache/kylin/job/execution/ExecutableManager.java @@ -83,11 +83,6 @@ public class ExecutableManager { CACHE.clear(); } - public static void clearCache(KylinConfig kylinConfig) { - if (kylinConfig != null) - CACHE.remove(kylinConfig); - } - private static ExecutablePO parse(AbstractExecutable executable) { ExecutablePO result = new ExecutablePO(); result.setName(executable.getName()); http://git-wip-us.apache.org/repos/asf/kylin/blob/c297f466/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java b/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java index b8141fe..bfc7f08 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/MetadataManager.java @@ -115,11 +115,6 @@ public class MetadataManager { CACHE.clear(); } - public static void clearCache(KylinConfig kylinConfig) { - if (kylinConfig != null) - CACHE.remove(kylinConfig); - } - // ============================================================================ private KylinConfig config; http://git-wip-us.apache.org/repos/asf/kylin/blob/c297f466/core-metadata/src/main/java/org/apache/kylin/metadata/badquery/BadQueryHistoryManager.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/badquery/BadQueryHistoryManager.java b/core-metadata/src/main/java/org/apache/kylin/metadata/badquery/BadQueryHistoryManager.java index d7cd425..c7eb133 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/badquery/BadQueryHistoryManager.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/badquery/BadQueryHistoryManager.java @@ -72,11 +72,6 @@ public class BadQueryHistoryManager { CACHE.clear(); } - public static void clearCache(KylinConfig kylinConfig) { - if (kylinConfig != null) - CACHE.remove(kylinConfig); - } - private ResourceStore getStore() { return ResourceStore.getStore(this.kylinConfig); } http://git-wip-us.apache.org/repos/asf/kylin/blob/c297f466/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java b/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java index 26e6f49..00b8857 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java @@ -163,11 +163,11 @@ public class Broadcaster { public void registerStaticListener(Listener listener, String... entities) { doRegisterListener(staticListenerMap, listener, entities); } - + public void registerListener(Listener listener, String... entities) { doRegisterListener(listenerMap, listener, entities); } - + private static void doRegisterListener(Map<String, List<Listener>> lmap, Listener listener, String... entities) { synchronized (lmap) { // ignore re-registration @@ -208,14 +208,26 @@ public class Broadcaster { } public void notifyListener(String entity, Event event, String cacheKey) throws IOException { + notifyListener(entity, event, cacheKey, true); + } + + public void notifyNonStaticListener(String entity, Event event, String cacheKey) throws IOException { + notifyListener(entity, event, cacheKey, false); + } + + private void notifyListener(String entity, Event event, String cacheKey, boolean includeStatic) throws IOException { // prevents concurrent modification exception List<Listener> list = Lists.newArrayList(); List<Listener> l1 = listenerMap.get(entity); // normal listeners first if (l1 != null) list.addAll(l1); - List<Listener> l2 = staticListenerMap.get(entity); // static listeners second - if (l2 != null) - list.addAll(l2); + + if (includeStatic) { + List<Listener> l2 = staticListenerMap.get(entity); // static listeners second + if (l2 != null) + list.addAll(l2); + } + if (list.isEmpty()) return; http://git-wip-us.apache.org/repos/asf/kylin/blob/c297f466/core-metadata/src/main/java/org/apache/kylin/metadata/draft/DraftManager.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/draft/DraftManager.java b/core-metadata/src/main/java/org/apache/kylin/metadata/draft/DraftManager.java index bf3c3c3..56ee251 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/draft/DraftManager.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/draft/DraftManager.java @@ -72,11 +72,6 @@ public class DraftManager { CACHE.clear(); } - public static void clearCache(KylinConfig kylinConfig) { - if (kylinConfig != null) - CACHE.remove(kylinConfig); - } - // ============================================================================ private KylinConfig config; http://git-wip-us.apache.org/repos/asf/kylin/blob/c297f466/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java b/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java index df5450c..bbbca4f 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java @@ -86,11 +86,6 @@ public class ProjectManager { CACHE.clear(); } - public static void clearCache(KylinConfig kylinConfig) { - if (kylinConfig != null) - CACHE.remove(kylinConfig); - } - // ============================================================================ private KylinConfig config; http://git-wip-us.apache.org/repos/asf/kylin/blob/c297f466/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java b/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java index 2ae4fa1..2d1a4a5 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java @@ -68,10 +68,6 @@ public class RealizationRegistry { CACHE.clear(); } - public static void clearCache(KylinConfig kylinConfig) { - CACHE.remove(kylinConfig); - } - // ============================================================================ private Map<RealizationType, IRealizationProvider> providers; http://git-wip-us.apache.org/repos/asf/kylin/blob/c297f466/core-metadata/src/test/java/org/apache/kylin/metadata/cachesync/BroadcasterTest.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/test/java/org/apache/kylin/metadata/cachesync/BroadcasterTest.java b/core-metadata/src/test/java/org/apache/kylin/metadata/cachesync/BroadcasterTest.java index 88cf404..80f26f9 100644 --- a/core-metadata/src/test/java/org/apache/kylin/metadata/cachesync/BroadcasterTest.java +++ b/core-metadata/src/test/java/org/apache/kylin/metadata/cachesync/BroadcasterTest.java @@ -40,7 +40,7 @@ public class BroadcasterTest extends LocalFileMetadataTestCase { public void after() throws Exception { this.cleanupTestMetadata(); } - + @Test public void testBasics() throws IOException { Broadcaster broadcaster = Broadcaster.getInstance(getTestConfig()); @@ -53,7 +53,7 @@ public class BroadcasterTest extends LocalFileMetadataTestCase { Assert.assertEquals(2, i.incrementAndGet()); } }, "test"); - + broadcaster.registerListener(new Listener() { @Override public void onEntityChange(Broadcaster broadcaster, String entity, Event event, String cacheKey) @@ -61,10 +61,35 @@ public class BroadcasterTest extends LocalFileMetadataTestCase { Assert.assertEquals(1, i.incrementAndGet()); } }, "test"); - + broadcaster.notifyListener("test", Event.UPDATE, ""); - + Broadcaster.staticListenerMap.clear(); } + @Test + public void testNotifyNonStatic() throws IOException { + Broadcaster broadcaster = Broadcaster.getInstance(getTestConfig()); + final AtomicInteger i = new AtomicInteger(0); + + broadcaster.registerStaticListener(new Listener() { + @Override + public void onEntityChange(Broadcaster broadcaster, String entity, Event event, String cacheKey) + throws IOException { + throw new IllegalStateException("Should not notify static listener."); + } + }, "test"); + + broadcaster.registerListener(new Listener() { + @Override + public void onEntityChange(Broadcaster broadcaster, String entity, Event event, String cacheKey) + throws IOException { + Assert.assertEquals(1, i.incrementAndGet()); + } + }, "test"); + + broadcaster.notifyNonStaticListener("test", Event.UPDATE, ""); + + Broadcaster.staticListenerMap.clear(); + } } http://git-wip-us.apache.org/repos/asf/kylin/blob/c297f466/core-storage/src/main/java/org/apache/kylin/storage/hybrid/HybridManager.java ---------------------------------------------------------------------- diff --git a/core-storage/src/main/java/org/apache/kylin/storage/hybrid/HybridManager.java b/core-storage/src/main/java/org/apache/kylin/storage/hybrid/HybridManager.java index 114f2c7..2b1c2cc 100644 --- a/core-storage/src/main/java/org/apache/kylin/storage/hybrid/HybridManager.java +++ b/core-storage/src/main/java/org/apache/kylin/storage/hybrid/HybridManager.java @@ -23,7 +23,6 @@ import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; -import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; import org.apache.kylin.common.KylinConfig; import org.apache.kylin.common.persistence.JsonSerializer; @@ -41,6 +40,8 @@ import org.apache.kylin.metadata.realization.RealizationType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.collect.Lists; + /** */ public class HybridManager implements IRealizationProvider { @@ -79,11 +80,6 @@ public class HybridManager implements IRealizationProvider { CACHE.clear(); } - public static void clearCache(KylinConfig kylinConfig) { - if (kylinConfig != null) - CACHE.remove(kylinConfig); - } - // ============================================================================ private KylinConfig config;