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());
