This is an automated email from the ASF dual-hosted git repository. sivabalan pushed a commit to branch release-0.5.3 in repository https://gitbox.apache.org/repos/asf/hudi.git
commit 2f4ee0a4af3c088f825decd77c5429c822b50ad6 Author: Edwin Guo <[email protected]> AuthorDate: Tue Mar 31 00:56:20 2020 -0400 [HUDI-742] Fix Java Math Exception (#1466) --- .../index/bloom/BucketizedBloomCheckPartitioner.java | 2 +- .../bloom/TestBucketizedBloomCheckPartitioner.java | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/hudi-client/src/main/java/org/apache/hudi/index/bloom/BucketizedBloomCheckPartitioner.java b/hudi-client/src/main/java/org/apache/hudi/index/bloom/BucketizedBloomCheckPartitioner.java index 798120c..36710dc 100644 --- a/hudi-client/src/main/java/org/apache/hudi/index/bloom/BucketizedBloomCheckPartitioner.java +++ b/hudi-client/src/main/java/org/apache/hudi/index/bloom/BucketizedBloomCheckPartitioner.java @@ -145,7 +145,7 @@ public class BucketizedBloomCheckPartitioner extends Partitioner { final Pair<String, String> parts = (Pair<String, String>) key; final long hashOfKey = NumericUtils.getMessageDigestHash("MD5", parts.getRight()); final List<Integer> candidatePartitions = fileGroupToPartitions.get(parts.getLeft()); - final int idx = (int) Math.floorMod(hashOfKey, candidatePartitions.size()); + final int idx = (int) Math.floorMod((int) hashOfKey, candidatePartitions.size()); assert idx >= 0; return candidatePartitions.get(idx); } diff --git a/hudi-client/src/test/java/org/apache/hudi/index/bloom/TestBucketizedBloomCheckPartitioner.java b/hudi-client/src/test/java/org/apache/hudi/index/bloom/TestBucketizedBloomCheckPartitioner.java index 29d039a..3ad5a99 100644 --- a/hudi-client/src/test/java/org/apache/hudi/index/bloom/TestBucketizedBloomCheckPartitioner.java +++ b/hudi-client/src/test/java/org/apache/hudi/index/bloom/TestBucketizedBloomCheckPartitioner.java @@ -30,6 +30,7 @@ import java.util.stream.IntStream; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class TestBucketizedBloomCheckPartitioner { @@ -79,4 +80,20 @@ public class TestBucketizedBloomCheckPartitioner { BucketizedBloomCheckPartitioner p = new BucketizedBloomCheckPartitioner(10000, comparisons1, 10); assertEquals("num partitions must equal total buckets", 100, p.numPartitions()); } + + @Test + public void testGetPartitions() { + Map<String, Long> comparisons1 = new HashMap<String, Long>() { + { + IntStream.range(0, 100000).forEach(f -> put("f" + f, 100L)); + } + }; + BucketizedBloomCheckPartitioner p = new BucketizedBloomCheckPartitioner(1000, comparisons1, 10); + + IntStream.range(0, 100000).forEach(f -> { + int partition = p.getPartition(Pair.of("f" + f, "value")); + assertTrue("partition is out of range: " + partition, 0 <= partition && partition <= 1000); + }); + } + }
