[CARBONDATA-2980][BloomDataMap] Fix bug in clearing bloomindex cache when recreating table and datamap
We use shard path as a part of key for bloomindex cache. However the path separator in windows is different from that in linux, which causes the cache not being cleaned when we clear the cache. (When we loading the cache, the path separator is '/' while dropping the cache, the path separator is '\') Here we fixed the bug by uniforming the path separator while clearing the cache. This closes #2778 Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/1c1ced32 Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/1c1ced32 Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/1c1ced32 Branch: refs/heads/branch-1.5 Commit: 1c1ced32d122ba8ce7cbad4fd29f778f5dbb4871 Parents: 9ae91cc Author: xuchuanyin <[email protected]> Authored: Sat Sep 29 14:03:09 2018 +0800 Committer: manishgupta88 <[email protected]> Committed: Sun Sep 30 12:19:56 2018 +0530 ---------------------------------------------------------------------- .../datamap/bloom/BloomCoarseGrainDataMapFactory.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/carbondata/blob/1c1ced32/datamap/bloom/src/main/java/org/apache/carbondata/datamap/bloom/BloomCoarseGrainDataMapFactory.java ---------------------------------------------------------------------- diff --git a/datamap/bloom/src/main/java/org/apache/carbondata/datamap/bloom/BloomCoarseGrainDataMapFactory.java b/datamap/bloom/src/main/java/org/apache/carbondata/datamap/bloom/BloomCoarseGrainDataMapFactory.java index 8c74c94..8974918 100644 --- a/datamap/bloom/src/main/java/org/apache/carbondata/datamap/bloom/BloomCoarseGrainDataMapFactory.java +++ b/datamap/bloom/src/main/java/org/apache/carbondata/datamap/bloom/BloomCoarseGrainDataMapFactory.java @@ -235,13 +235,13 @@ public class BloomCoarseGrainDataMapFactory extends DataMapFactory<CoarseGrainDa } else if (carbonFile.getName().equals(BloomIndexFileStore.MERGE_INPROGRESS_FILE)) { mergeShardInprogress = true; } else if (carbonFile.isDirectory()) { - shardPaths.add(carbonFile.getAbsolutePath()); + shardPaths.add(FileFactory.getPath(carbonFile.getAbsolutePath()).toString()); } } if (mergeShardFile != null && !mergeShardInprogress) { // should only get one shard path if mergeShard is generated successfully shardPaths.clear(); - shardPaths.add(mergeShardFile.getAbsolutePath()); + shardPaths.add(FileFactory.getPath(mergeShardFile.getAbsolutePath()).toString()); } return shardPaths; } @@ -349,6 +349,7 @@ public class BloomCoarseGrainDataMapFactory extends DataMapFactory<CoarseGrainDa FileFactory.getFileType(datamapPath)); CarbonUtil.deleteFoldersAndFilesSilent(file); } + clear(segment); } catch (InterruptedException ex) { throw new IOException("Failed to delete datamap for segment_" + segment.getSegmentNo()); }
