minor, fix concurrent issue with CubeSegment.cuboidBaseShards

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

Branch: refs/heads/v1.6.0-rc1-hbase1.x
Commit: 5d4d639ddb6b190e4978262e4e39778866b7270a
Parents: 8199a90
Author: gaodayue <gaoda...@meituan.com>
Authored: Wed Oct 26 21:39:11 2016 +0800
Committer: gaodayue <gaoda...@meituan.com>
Committed: Fri Oct 28 13:31:48 2016 +0800

----------------------------------------------------------------------
 .../src/main/java/org/apache/kylin/cube/CubeSegment.java      | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/5d4d639d/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java 
b/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java
index fdf1fb0..b3d6d6b 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeSegment.java
@@ -49,6 +49,8 @@ import 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
+import javax.annotation.concurrent.GuardedBy;
+
 @JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = 
Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = 
Visibility.NONE)
 public class CubeSegment implements Comparable<CubeSegment>, IBuildable, 
ISegment {
 
@@ -115,7 +117,8 @@ public class CubeSegment implements 
Comparable<CubeSegment>, IBuildable, ISegmen
     @JsonInclude(JsonInclude.Include.NON_EMPTY)
     private Map<String, String> additionalInfo = new LinkedHashMap<String, 
String>();
 
-    private volatile Map<Long, Short> cuboidBaseShards = 
Maps.newHashMap();//cuboid id ==> base(starting) shard for this cuboid
+    @GuardedBy("this")
+    private Map<Long, Short> cuboidBaseShards = Maps.newHashMap(); // cuboid 
id ==> base(starting) shard for this cuboid
 
     public CubeDesc getCubeDesc() {
         return getCubeInstance().getDescriptor();
@@ -516,7 +519,7 @@ public class CubeSegment implements 
Comparable<CubeSegment>, IBuildable, ISegmen
         this.totalShards = totalShards;
     }
 
-    public short getCuboidBaseShard(Long cuboidId) {
+    public synchronized short getCuboidBaseShard(Long cuboidId) {
         if (totalShards > 0) {
             //shard squashed case
 

Reply via email to