You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by du...@apache.org on 2020/03/05 09:38:53 UTC

[rocketmq] branch develop updated: fix(test):fix the issue that MessageClientIDSetter#getIPFromID return wrong pid when pid greater than short type max value

This is an automated email from the ASF dual-hosted git repository.

duhengforever 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 d119204  fix(test):fix the issue that MessageClientIDSetter#getIPFromID return wrong pid when pid greater than short type max value
     new d7102c0  Merge pull request #1822 from RongtongJin/fix_1821
d119204 is described below

commit d119204f766260b96906e8fb8c17cef2e1ba7c58
Author: rongtongjin <79...@qq.com>
AuthorDate: Thu Mar 5 16:13:13 2020 +0800

    fix(test):fix the issue that MessageClientIDSetter#getIPFromID return wrong pid when pid greater than short type max value
---
 .../org/apache/rocketmq/common/message/MessageClientIDSetter.java   | 6 +++---
 .../apache/rocketmq/common/message/MessageClientIDSetterTest.java   | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/common/src/main/java/org/apache/rocketmq/common/message/MessageClientIDSetter.java b/common/src/main/java/org/apache/rocketmq/common/message/MessageClientIDSetter.java
index 9d6ec95..041bf6b 100644
--- a/common/src/main/java/org/apache/rocketmq/common/message/MessageClientIDSetter.java
+++ b/common/src/main/java/org/apache/rocketmq/common/message/MessageClientIDSetter.java
@@ -104,11 +104,11 @@ public class MessageClientIDSetter {
         return result;
     }
 
-    public static short getPidFromID(String msgID) {
+    public static int getPidFromID(String msgID) {
         byte[] bytes = UtilAll.string2bytes(msgID);
         ByteBuffer wrap = ByteBuffer.wrap(bytes);
-        wrap.position(bytes.length - 2 - 4 - 4 - 2);
-        return wrap.getShort();
+        int value = wrap.getShort(bytes.length - 2 - 4 - 4 - 2);
+        return value & 0x0000FFFF;
     }
 
     public static String createUniqID() {
diff --git a/common/src/test/java/org/apache/rocketmq/common/message/MessageClientIDSetterTest.java b/common/src/test/java/org/apache/rocketmq/common/message/MessageClientIDSetterTest.java
index 55aa505..6d8c203 100644
--- a/common/src/test/java/org/apache/rocketmq/common/message/MessageClientIDSetterTest.java
+++ b/common/src/test/java/org/apache/rocketmq/common/message/MessageClientIDSetterTest.java
@@ -40,7 +40,7 @@ public class MessageClientIDSetterTest {
         int pid = UtilAll.getPid();
 
         String uniqID = MessageClientIDSetter.createUniqID();
-        short pidFromID = MessageClientIDSetter.getPidFromID(uniqID);
+        int pidFromID = MessageClientIDSetter.getPidFromID(uniqID);
 
         assertThat(pid).isEqualTo(pidFromID);
     }