You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by si...@apache.org on 2020/05/28 00:19:02 UTC
[hudi] 19/40: [HUDI-742] Fix Java Math Exception (#1466)
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 <al...@yahoo.com>
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);
+ });
+ }
+
}