You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by ji...@apache.org on 2020/11/12 12:32:38 UTC
[rocketmq] branch develop updated: [ISSUE #2421] Fix
SelectMessageQueueByHash in case hashcode is Integer.MIN
This is an automated email from the ASF dual-hosted git repository.
jinrongtong pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git
The following commit(s) were added to refs/heads/develop by this push:
new 0b60048 [ISSUE #2421] Fix SelectMessageQueueByHash in case hashcode is Integer.MIN
0b60048 is described below
commit 0b600484b512f01d752e39ebb42c5a8b6e50fcb5
Author: 张哈希 <zh...@vip.sina.com>
AuthorDate: Thu Nov 12 12:32:17 2020 +0000
[ISSUE #2421] Fix SelectMessageQueueByHash in case hashcode is Integer.MIN
---
.../client/producer/selector/SelectMessageQueueByHash.java | 4 +---
.../client/producer/selector/SelectMessageQueueByHashTest.java | 8 ++++++++
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/client/src/main/java/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByHash.java b/client/src/main/java/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByHash.java
index 11e2822..ba8ea8b 100644
--- a/client/src/main/java/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByHash.java
+++ b/client/src/main/java/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByHash.java
@@ -25,12 +25,10 @@ public class SelectMessageQueueByHash implements MessageQueueSelector {
@Override
public MessageQueue select(List<MessageQueue> mqs, Message msg, Object arg) {
- int value = arg.hashCode();
+ int value = arg.hashCode() % mqs.size();
if (value < 0) {
value = Math.abs(value);
}
-
- value = value % mqs.size();
return mqs.get(value);
}
}
diff --git a/client/src/test/java/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByHashTest.java b/client/src/test/java/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByHashTest.java
index 056e910..8f286ee 100644
--- a/client/src/test/java/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByHashTest.java
+++ b/client/src/test/java/org/apache/rocketmq/client/producer/selector/SelectMessageQueueByHashTest.java
@@ -44,6 +44,14 @@ public class SelectMessageQueueByHashTest {
String anotherOrderId = "234";
MessageQueue selected = selector.select(messageQueues, message, orderId);
assertThat(selector.select(messageQueues, message, anotherOrderId)).isNotEqualTo(selected);
+
+ //No exception is thrown while order Id hashcode is Integer.MIN
+ anotherOrderId = "polygenelubricants";
+ selector.select(messageQueues, message, anotherOrderId);
+ anotherOrderId = "GydZG_";
+ selector.select(messageQueues, message, anotherOrderId);
+ anotherOrderId = "DESIGNING WORKHOUSES";
+ selector.select(messageQueues, message, anotherOrderId);
}
}
\ No newline at end of file