You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2015/07/08 12:11:59 UTC

incubator-kylin git commit: minor, fix concurrent NPE in InMemCubeBuilder

Repository: incubator-kylin
Updated Branches:
  refs/heads/0.8 9b2848c99 -> ba9a8a143


minor, fix concurrent NPE in InMemCubeBuilder


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

Branch: refs/heads/0.8
Commit: ba9a8a143946179375fd0be189a67314fdf63765
Parents: 9b2848c
Author: Li, Yang <ya...@ebay.com>
Authored: Wed Jul 8 18:11:51 2015 +0800
Committer: Li, Yang <ya...@ebay.com>
Committed: Wed Jul 8 18:11:51 2015 +0800

----------------------------------------------------------------------
 .../kylin/job/inmemcubing/InMemCubeBuilder.java | 22 +++++++++++---------
 1 file changed, 12 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/ba9a8a14/job/src/main/java/org/apache/kylin/job/inmemcubing/InMemCubeBuilder.java
----------------------------------------------------------------------
diff --git a/job/src/main/java/org/apache/kylin/job/inmemcubing/InMemCubeBuilder.java b/job/src/main/java/org/apache/kylin/job/inmemcubing/InMemCubeBuilder.java
index f2ecad1..761199c 100644
--- a/job/src/main/java/org/apache/kylin/job/inmemcubing/InMemCubeBuilder.java
+++ b/job/src/main/java/org/apache/kylin/job/inmemcubing/InMemCubeBuilder.java
@@ -142,23 +142,25 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder {
             cuboidResult.table.close();
         }
     }
-    
+
     TreeMap<Long, CuboidResult> build(BlockingQueue<List<String>> input) throws IOException {
         final TreeMap<Long, CuboidResult> result = new TreeMap<Long, CuboidResult>();
         ICuboidCollector collector = new ICuboidCollector() {
             @Override
             public void collect(CuboidResult cuboidResult) {
-                result.put(cuboidResult.cuboidId, cuboidResult);
+                synchronized (result) {
+                    result.put(cuboidResult.cuboidId, cuboidResult);
+                }
             }
         };
         build(input, collector);
         return result;
     }
-    
+
     static interface ICuboidCollector {
         public void collect(CuboidResult result);
     }
-    
+
     static class CuboidResult {
         public long cuboidId;
         public GridTable table;
@@ -207,7 +209,7 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder {
 
         throwExceptionIfAny();
     }
-    
+
     public void abort() {
         interrupt(taskThreads);
     }
@@ -216,7 +218,7 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder {
         for (Thread t : threads)
             t.start();
     }
-    
+
     private void interrupt(Thread... threads) {
         for (Thread t : threads)
             t.interrupt();
@@ -264,7 +266,7 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder {
     public boolean isAllCuboidDone() {
         return taskCuboidCompleted.get() == totalCuboidCount;
     }
-    
+
     private class CuboidTaskThread extends Thread {
         private int id;
 
@@ -397,10 +399,10 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder {
         if (aggrCacheMB <= 0) {
             aggrCacheMB = (int) Math.ceil(1.0 * nRows / baseResult.nRows * baseResult.aggrCacheMB);
         }
-        
+
         CuboidResult result = new CuboidResult(cuboidId, table, nRows, timeSpent, aggrCacheMB);
         taskCuboidCompleted.incrementAndGet();
-        
+
         resultCollector.collect(result);
         return result;
     }
@@ -651,6 +653,6 @@ public class InMemCubeBuilder extends AbstractInMemCubeBuilder {
         private byte[] toBytes(String v) {
             return v == null ? null : Bytes.toBytes(v);
         }
-        
+
     }
 }