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/07/26 01:45:34 UTC
[kylin] branch master updated: KYLIN-3414 Optimize the cleanup of
project L2 cache
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 036e26c KYLIN-3414 Optimize the cleanup of project L2 cache
036e26c is described below
commit 036e26caafef60610d4c0ab7833b19319251c7f5
Author: GinaZhai <na...@kyligence.io>
AuthorDate: Wed Jul 25 17:44:15 2018 +0800
KYLIN-3414 Optimize the cleanup of project L2 cache
---
.../src/main/java/org/apache/kylin/cube/CubeManager.java | 2 +-
.../org/apache/kylin/metadata/cachesync/Broadcaster.java | 6 +++---
.../org/apache/kylin/metadata/project/ProjectL2Cache.java | 8 ++++++--
.../org/apache/kylin/metadata/project/ProjectManager.java | 12 ++++++------
4 files changed, 16 insertions(+), 12 deletions(-)
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 3ff0160..9d377d9 100755
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
@@ -401,7 +401,7 @@ public class CubeManager implements IRealizationProvider {
}
//this is a duplicate call to take care of scenarios where REST cache service unavailable
- ProjectManager.getInstance(cube.getConfig()).clearL2Cache();
+ ProjectManager.getInstance(cube.getConfig()).clearL2Cache(cube.getProject());
return cube;
}
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 6462a27..d5ecc16 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
@@ -254,19 +254,19 @@ public class Broadcaster {
config.clearManagers(); // clear all registered managers in config
break;
case SYNC_PRJ_SCHEMA:
- ProjectManager.getInstance(config).clearL2Cache();
+ ProjectManager.getInstance(config).clearL2Cache(cacheKey);
for (Listener l : list) {
l.onProjectSchemaChange(this, cacheKey);
}
break;
case SYNC_PRJ_DATA:
- ProjectManager.getInstance(config).clearL2Cache(); // cube's first becoming ready leads to schema change too
+ ProjectManager.getInstance(config).clearL2Cache(cacheKey); // cube's first becoming ready leads to schema change too
for (Listener l : list) {
l.onProjectDataChange(this, cacheKey);
}
break;
case SYNC_PRJ_ACL:
- ProjectManager.getInstance(config).clearL2Cache();
+ ProjectManager.getInstance(config).clearL2Cache(cacheKey);
for (Listener l : list) {
l.onProjectQueryACLChange(this, cacheKey);
}
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectL2Cache.java b/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectL2Cache.java
index 1663c8d..6e718c2 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectL2Cache.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectL2Cache.java
@@ -59,8 +59,12 @@ class ProjectL2Cache {
this.mgr = mgr;
}
- public void clear() {
- projectCaches.clear();
+ public void clear(String projectname) {
+ if (projectname == null) {
+ projectCaches.clear();
+ } else {
+ projectCaches.remove(projectname);
+ }
}
public ExternalFilterDesc getExternalFilterDesc(String project, String extFilterName) {
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 5122fd8..25908cd 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
@@ -113,8 +113,8 @@ public class ProjectManager {
}
}
- public void clearL2Cache() {
- l2Cache.clear();
+ public void clearL2Cache(String projectname) {
+ l2Cache.clear(projectname);
}
public void reloadProjectL2Cache(String project) {
@@ -124,7 +124,7 @@ public class ProjectManager {
public ProjectInstance reloadProjectQuietly(String project) throws IOException {
try (AutoLock lock = prjMapLock.lockForWrite()) {
ProjectInstance prj = crud.reloadQuietly(project);
- clearL2Cache();
+ clearL2Cache(project);
return prj;
}
}
@@ -209,7 +209,7 @@ public class ProjectManager {
crud.delete(projectInstance);
BadQueryHistoryManager.getInstance(config).removeBadQueryHistory(projectName);
- clearL2Cache();
+ clearL2Cache(projectName);
return projectInstance;
}
}
@@ -233,7 +233,7 @@ public class ProjectManager {
public void removeProjectLocal(String proj) {
try (AutoLock lock = prjMapLock.lockForWrite()) {
projectMap.removeLocal(proj);
- clearL2Cache();
+ clearL2Cache(proj);
}
}
@@ -358,7 +358,7 @@ public class ProjectManager {
private ProjectInstance save(ProjectInstance prj) throws IOException {
crud.save(prj);
- clearL2Cache();
+ clearL2Cache(prj.getName());
return prj;
}