This is an automated email from the ASF dual-hosted git repository.
zhouxzhan pushed a commit to branch 4.9.x
in repository https://gitbox.apache.org/repos/asf/rocketmq.git
The following commit(s) were added to refs/heads/4.9.x by this push:
new e5637e2c1 [ISSUE #3905] make getClazzFields obtain super class field
e5637e2c1 is described below
commit e5637e2c1eb4d7e27fa6fb5d6e02f9eae5569d92
Author: zhouxiang <[email protected]>
AuthorDate: Fri Nov 18 15:10:41 2022 +0800
[ISSUE #3905] make getClazzFields obtain super class field
---
.../org/apache/rocketmq/remoting/protocol/RemotingCommand.java | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git
a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java
b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java
index b6523a3fb..7145e8915 100644
---
a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java
+++
b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/RemotingCommand.java
@@ -22,8 +22,11 @@ import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;
import java.nio.ByteBuffer;
+import java.util.Arrays;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.rocketmq.logging.InternalLogger;
import org.apache.rocketmq.logging.InternalLoggerFactory;
@@ -317,7 +320,12 @@ public class RemotingCommand {
Field[] field = CLASS_HASH_MAP.get(classHeader);
if (field == null) {
- field = classHeader.getDeclaredFields();
+ Set<Field> fieldList = new HashSet<>();
+ for (Class className = classHeader; className != Object.class;
className = className.getSuperclass()) {
+ Field[] fields = className.getDeclaredFields();
+ fieldList.addAll(Arrays.asList(fields));
+ }
+ field = fieldList.toArray(new Field[0]);
synchronized (CLASS_HASH_MAP) {
CLASS_HASH_MAP.put(classHeader, field);
}