Repository: kylin
Updated Branches:
  refs/heads/master f65e8cb5e -> 6c2b8341c


KYLIN-2628 Remove synchronized modifier for reloadCubeLocalAt


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

Branch: refs/heads/master
Commit: 6c2b8341c02474f9838adb079bf8dcc37ebb3848
Parents: f65e8cb
Author: kangkaisen <[email protected]>
Authored: Thu May 11 15:28:10 2017 +0800
Committer: kangkaisen <[email protected]>
Committed: Fri Jun 9 17:51:37 2017 +0800

----------------------------------------------------------------------
 .../main/java/org/apache/kylin/cube/CubeManager.java | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/6c2b8341/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 54902fb..a53e43e 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
@@ -73,9 +73,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Preconditions;
-import com.google.common.collect.HashMultimap;
 import com.google.common.collect.Lists;
-import com.google.common.collect.Multimap;
 
 /**
  * @author yangli9
@@ -133,7 +131,7 @@ public class CubeManager implements IRealizationProvider {
     //    private SingleValueCache<String, LookupStringTable> lookupTables = 
new SingleValueCache<String, LookupStringTable>(Broadcaster.TYPE.METADATA);
 
     // for generation hbase table name of a new segment
-    private Multimap<String, String> usedStorageLocation = 
HashMultimap.create();
+    private ConcurrentMap<String, String> usedStorageLocation = new 
ConcurrentHashMap<>();
 
     private CubeManager(KylinConfig config) throws IOException {
         logger.info("Initializing CubeManager with config " + config);
@@ -659,7 +657,12 @@ public class CubeManager implements IRealizationProvider {
     }
 
     public void removeCubeLocal(String cubeName) {
-        usedStorageLocation.removeAll(cubeName.toUpperCase());
+        CubeInstance cube = cubeMap.get(cubeName);
+        if (cube != null) {
+            for (CubeSegment segment : cube.getSegments()) {
+                usedStorageLocation.remove(segment.getUuid());
+            }
+        }
         cubeMap.removeLocal(cubeName);
     }
 
@@ -787,7 +790,7 @@ public class CubeManager implements IRealizationProvider {
         logger.info("Loaded " + succeed + " cubes, fail on " + fail + " 
cubes");
     }
 
-    private synchronized CubeInstance reloadCubeLocalAt(String path) {
+    private CubeInstance reloadCubeLocalAt(String path) {
         ResourceStore store = getStore();
         CubeInstance cube;
 
@@ -820,7 +823,7 @@ public class CubeManager implements IRealizationProvider {
             cubeMap.putLocal(cubeName, cube);
 
             for (CubeSegment segment : cube.getSegments()) {
-                usedStorageLocation.put(cubeName.toUpperCase(), 
segment.getStorageLocationIdentifier());
+                usedStorageLocation.put(segment.getUuid(), 
segment.getStorageLocationIdentifier());
             }
 
             logger.info("Reloaded cube {} being {} having {} segments", 
cubeName, cube, cube.getSegments().size());

Reply via email to