Merge pull request #1822 from RongtongJin/fix_1821

[ISSUE #1821]Fix the issue that MessageClientIDSetter#getIPFromID return wrong pid
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 @@
         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 @@
         int pid = UtilAll.getPid();
 
         String uniqID = MessageClientIDSetter.createUniqID();
-        short pidFromID = MessageClientIDSetter.getPidFromID(uniqID);
+        int pidFromID = MessageClientIDSetter.getPidFromID(uniqID);
 
         assertThat(pid).isEqualTo(pidFromID);
     }