You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ja...@apache.org on 2018/12/27 15:24:27 UTC

carbondata git commit: [CARBONDATA-3165]Protection of Bloom Null Exception

Repository: carbondata
Updated Branches:
  refs/heads/master 7fec2c5b1 -> 56aecb6b6


[CARBONDATA-3165]Protection of Bloom Null Exception

When filteredShard is empty, return arraylist<>(), and protect null exception of other scenarios

This closes #2984


Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo
Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/56aecb6b
Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/56aecb6b
Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/56aecb6b

Branch: refs/heads/master
Commit: 56aecb6b618d80feabad0236d9556314f9d18e63
Parents: 7fec2c5
Author: qiuchenjian <80...@qq.com>
Authored: Wed Dec 12 16:43:31 2018 +0800
Committer: Jacky Li <ja...@qq.com>
Committed: Thu Dec 27 23:24:11 2018 +0800

----------------------------------------------------------------------
 .../carbondata/datamap/bloom/BloomCoarseGrainDataMap.java | 10 ++++++++++
 1 file changed, 10 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/carbondata/blob/56aecb6b/datamap/bloom/src/main/java/org/apache/carbondata/datamap/bloom/BloomCoarseGrainDataMap.java
----------------------------------------------------------------------
diff --git a/datamap/bloom/src/main/java/org/apache/carbondata/datamap/bloom/BloomCoarseGrainDataMap.java b/datamap/bloom/src/main/java/org/apache/carbondata/datamap/bloom/BloomCoarseGrainDataMap.java
index 7a104fc..4459fc5 100644
--- a/datamap/bloom/src/main/java/org/apache/carbondata/datamap/bloom/BloomCoarseGrainDataMap.java
+++ b/datamap/bloom/src/main/java/org/apache/carbondata/datamap/bloom/BloomCoarseGrainDataMap.java
@@ -175,6 +175,10 @@ public class BloomCoarseGrainDataMap extends CoarseGrainDataMap {
       // null is different from empty here. Empty means after pruning, no blocklet need to scan.
       return null;
     }
+    if (filteredShard.isEmpty()) {
+      LOGGER.info("Bloom filtered shards is empty");
+      return new ArrayList<>();
+    }
 
     List<BloomQueryModel> bloomQueryModels;
     try {
@@ -227,6 +231,12 @@ public class BloomCoarseGrainDataMap extends CoarseGrainDataMap {
         }
       }
     }
+    if (hitBlocklets == null) {
+      LOGGER.warn(String.format("HitBlocklets is empty in bloom filter prune method. " +
+              "bloomQueryModels size is %d, filterShards size if %d",
+              bloomQueryModels.size(), filteredShard.size()));
+      return null;
+    }
     return new ArrayList<>(hitBlocklets);
   }