rocketmq icon indicating copy to clipboard operation
rocketmq copied to clipboard

[ISSUE #9396] Use fastjson2 in all modules

Open yx9o opened this issue 7 months ago • 7 comments

Fixes #9396 .

yx9o avatar May 10 '25 09:05 yx9o

Codecov Report

:x: Patch coverage is 58.06452% with 26 lines in your changes missing coverage. Please review. :white_check_mark: Project coverage is 49.67%. Comparing base (1a3c922) to head (a7c4d8c).

Files with missing lines Patch % Lines
...emoting/protocol/BitSetSerializerDeserializer.java 38.46% 5 Missing and 3 partials :warning:
...mq/tools/command/export/ExportMetadataCommand.java 0.00% 3 Missing :warning:
...mon/fastjson/GenericMapSuperclassDeserializer.java 85.71% 1 Missing and 1 partial :warning:
...ache/rocketmq/common/utils/FastJsonSerializer.java 0.00% 2 Missing :warning:
...tmq/remoting/protocol/heartbeat/HeartbeatData.java 0.00% 2 Missing :warning:
...command/export/ExportMetadataInRocksDBCommand.java 0.00% 2 Missing :warning:
...s/command/metadata/RocksDBConfigToJsonCommand.java 0.00% 2 Missing :warning:
.../org/apache/rocketmq/store/timer/TimerMetrics.java 66.66% 1 Missing :warning:
...mmand/broker/GetColdDataFlowCtrInfoSubCommand.java 0.00% 1 Missing :warning:
...tmq/tools/command/export/ExportConfigsCommand.java 0.00% 1 Missing :warning:
... and 2 more
Additional details and impacted files
@@              Coverage Diff              @@
##             develop    #9397      +/-   ##
=============================================
+ Coverage      48.39%   49.67%   +1.28%     
- Complexity     12286    12695     +409     
=============================================
  Files           1315     1315              
  Lines          93918    93931      +13     
  Branches       12046    12049       +3     
=============================================
+ Hits           45452    46662    +1210     
+ Misses         42854    41556    -1298     
- Partials        5612     5713     +101     

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

:rocket: New features to boost your workflow:
  • :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

codecov-commenter avatar May 10 '25 14:05 codecov-commenter

1、Could you provide the performance benchmark data for the original Fastjson 1? 2、Could you provide compatibility test results with Fastjson 1, particularly when the object contains camel-case properties?

fuyou001 avatar May 29 '25 03:05 fuyou001

1、Could you provide the performance benchmark data for the original Fastjson 1? 2、Could you provide compatibility test results with Fastjson 1, particularly when the object contains camel-case properties?

Thank you for your review. The data for the two questions are as follows: 1. image

image image image

Regarding question 2, I encountered the camel case problem of getCId during the replacement test. The solution is to move the @JSONField(name = "c") annotation from the attribute to the get/set method. All the replaced codes are covered by unit tests.

yx9o avatar May 29 '25 14:05 yx9o

Could you develop a tool to validate whether objects with camelCase properties are compatible with Fastjson 2, so we can check compatibility? @yx9o

fuyou001 avatar Jun 08 '25 08:06 fuyou001

Could you develop a tool to validate whether objects with camelCase properties are compatible with Fastjson 2, so we can check compatibility? @yx9o

Let me understand. We need to develop a tool to test all objects in the project that have irregular camel case naming to ensure that fastjson1 and fastjson2 serialization are compatible, right?

yx9o avatar Jun 09 '25 00:06 yx9o

Could you develop a tool to validate whether objects with camelCase properties are compatible with Fastjson 2, so we can check compatibility? @yx9o

Let me understand. We need to develop a tool to test all objects in the project that have irregular camel case naming to ensure that fastjson1 and fastjson2 serialization are compatible, right?

Yes, but we should only validate classes involved in JSON serialization/deserialization.

fuyou001 avatar Jun 10 '25 07:06 fuyou001

Hi @fuyou001 , please help review again. According to your review, I added the following serialization compatibility test tool class: RemotingSerializableCompatTest. It mainly does the following:

  1. Construct objects with default parameters for all subclasses of RemotingSerializable
  2. Use fastjson1 to serialize the object obtained in the first step
  3. Use fastjson2 to deserialize the json string obtained in the second step
  4. Compare the object deserialized in the third step with the object constructed in the first step, and compare all attribute values. Their comparisons are all passed

yx9o avatar Jun 13 '25 14:06 yx9o

Hi @fuyou001 , please help review again. According to your review, I added the following serialization compatibility test tool class: RemotingSerializableCompatTest. It mainly does the following:

  1. Construct objects with default parameters for all subclasses of RemotingSerializable
  2. Use fastjson1 to serialize the object obtained in the first step
  3. Use fastjson2 to deserialize the json string obtained in the second step
  4. Compare the object deserialized in the third step with the object constructed in the first step, and compare all attribute values. Their comparisons are all passed

When running RemotingSerializableCompatTest, I encountered failed classes. Here's the output for your review: failed:class org.apache.rocketmq.remoting.protocol.body.RegisterBrokerBody failed:class org.apache.rocketmq.remoting.protocol.header.GetConsumerListByGroupResponseBody failed:class org.apache.rocketmq.remoting.protocol.route.TopicRouteData failed:class org.apache.rocketmq.remoting.protocol.statictopic.TopicRemappingDetailWrapper failed:class org.apache.rocketmq.remoting.protocol.body.SubscriptionGroupList failed:class org.apache.rocketmq.remoting.protocol.body.GroupList failed:class org.apache.rocketmq.remoting.protocol.body.ElectMasterResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.QueryAssignmentResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.BrokerMemberGroup failed:class org.apache.rocketmq.remoting.protocol.heartbeat.HeartbeatData failed:class org.apache.rocketmq.remoting.protocol.body.CheckClientRequestBody failed:class org.apache.rocketmq.remoting.protocol.body.GetBrokerMemberGroupResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.ClusterInfo failed:class org.apache.rocketmq.remoting.protocol.body.QueryConsumeQueueResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.TopicList failed:class org.apache.rocketmq.remoting.protocol.body.QuerySubscriptionResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.ConsumeByWho failed:class org.apache.rocketmq.remoting.protocol.body.ConsumerRunningInfo failed:class org.apache.rocketmq.remoting.protocol.body.KVTable failed:class org.apache.rocketmq.remoting.protocol.body.CreateTopicListRequestBody

fuyou001 avatar Jun 20 '25 06:06 fuyou001

@yx9o Subclasses of ConfigManager must also be checked

fuyou001 avatar Jun 20 '25 07:06 fuyou001

Hi @fuyou001 , please help review again. According to your review, I added the following serialization compatibility test tool class: RemotingSerializableCompatTest. It mainly does the following:

  1. Construct objects with default parameters for all subclasses of RemotingSerializable
  2. Use fastjson1 to serialize the object obtained in the first step
  3. Use fastjson2 to deserialize the json string obtained in the second step
  4. Compare the object deserialized in the third step with the object constructed in the first step, and compare all attribute values. Their comparisons are all passed

When running RemotingSerializableCompatTest, I encountered failed classes. Here's the output for your review: failed:class org.apache.rocketmq.remoting.protocol.body.RegisterBrokerBody failed:class org.apache.rocketmq.remoting.protocol.header.GetConsumerListByGroupResponseBody failed:class org.apache.rocketmq.remoting.protocol.route.TopicRouteData failed:class org.apache.rocketmq.remoting.protocol.statictopic.TopicRemappingDetailWrapper failed:class org.apache.rocketmq.remoting.protocol.body.SubscriptionGroupList failed:class org.apache.rocketmq.remoting.protocol.body.GroupList failed:class org.apache.rocketmq.remoting.protocol.body.ElectMasterResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.QueryAssignmentResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.BrokerMemberGroup failed:class org.apache.rocketmq.remoting.protocol.heartbeat.HeartbeatData failed:class org.apache.rocketmq.remoting.protocol.body.CheckClientRequestBody failed:class org.apache.rocketmq.remoting.protocol.body.GetBrokerMemberGroupResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.ClusterInfo failed:class org.apache.rocketmq.remoting.protocol.body.QueryConsumeQueueResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.TopicList failed:class org.apache.rocketmq.remoting.protocol.body.QuerySubscriptionResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.ConsumeByWho failed:class org.apache.rocketmq.remoting.protocol.body.ConsumerRunningInfo failed:class org.apache.rocketmq.remoting.protocol.body.KVTable failed:class org.apache.rocketmq.remoting.protocol.body.CreateTopicListRequestBody

Hello, I received your response. I have tested this class separately in the current branch and the develop branch. No errors occur. There is no "failed: xx" error output in the class itself. May I ask how you run this test?

yx9o avatar Jun 21 '25 08:06 yx9o

@yx9o Subclasses of ConfigManager must also be checked

ConfigManager's subclasses are in multiple different packages and cannot be tested uniformly using tool classes. I want to do fastjson1 serialization and fastjson2 deserialization compatibility verification in each subclass's Test. Is this OK?

yx9o avatar Jun 21 '25 10:06 yx9o

Hi @fuyou001 , please help review again. According to your review, I added the following serialization compatibility test tool class: RemotingSerializableCompatTest. It mainly does the following:

  1. Construct objects with default parameters for all subclasses of RemotingSerializable
  2. Use fastjson1 to serialize the object obtained in the first step
  3. Use fastjson2 to deserialize the json string obtained in the second step
  4. Compare the object deserialized in the third step with the object constructed in the first step, and compare all attribute values. Their comparisons are all passed

When running RemotingSerializableCompatTest, I encountered failed classes. Here's the output for your review: failed:class org.apache.rocketmq.remoting.protocol.body.RegisterBrokerBody failed:class org.apache.rocketmq.remoting.protocol.header.GetConsumerListByGroupResponseBody failed:class org.apache.rocketmq.remoting.protocol.route.TopicRouteData failed:class org.apache.rocketmq.remoting.protocol.statictopic.TopicRemappingDetailWrapper failed:class org.apache.rocketmq.remoting.protocol.body.SubscriptionGroupList failed:class org.apache.rocketmq.remoting.protocol.body.GroupList failed:class org.apache.rocketmq.remoting.protocol.body.ElectMasterResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.QueryAssignmentResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.BrokerMemberGroup failed:class org.apache.rocketmq.remoting.protocol.heartbeat.HeartbeatData failed:class org.apache.rocketmq.remoting.protocol.body.CheckClientRequestBody failed:class org.apache.rocketmq.remoting.protocol.body.GetBrokerMemberGroupResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.ClusterInfo failed:class org.apache.rocketmq.remoting.protocol.body.QueryConsumeQueueResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.TopicList failed:class org.apache.rocketmq.remoting.protocol.body.QuerySubscriptionResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.ConsumeByWho failed:class org.apache.rocketmq.remoting.protocol.body.ConsumerRunningInfo failed:class org.apache.rocketmq.remoting.protocol.body.KVTable failed:class org.apache.rocketmq.remoting.protocol.body.CreateTopicListRequestBody

Hello, I received your response. I have tested this class separately in the current branch and the develop branch. No errors occur. There is no "failed: xx" error output in the class itself. May I ask how you run this test?

RemotingSerializableCompatTest.testCompatibilityCheck method , I change :

image

            boolean isSuccess = checkCompatible(instance, clazz);
            if (!isSuccess) {
                System.out.println("failed:" + clazz);
            } 

fuyou001 avatar Jun 23 '25 06:06 fuyou001

Hi @fuyou001 , please help review again. According to your review, I added the following serialization compatibility test tool class: RemotingSerializableCompatTest. It mainly does the following:

  1. Construct objects with default parameters for all subclasses of RemotingSerializable
  2. Use fastjson1 to serialize the object obtained in the first step
  3. Use fastjson2 to deserialize the json string obtained in the second step
  4. Compare the object deserialized in the third step with the object constructed in the first step, and compare all attribute values. Their comparisons are all passed

When running RemotingSerializableCompatTest, I encountered failed classes. Here's the output for your review: failed:class org.apache.rocketmq.remoting.protocol.body.RegisterBrokerBody failed:class org.apache.rocketmq.remoting.protocol.header.GetConsumerListByGroupResponseBody failed:class org.apache.rocketmq.remoting.protocol.route.TopicRouteData failed:class org.apache.rocketmq.remoting.protocol.statictopic.TopicRemappingDetailWrapper failed:class org.apache.rocketmq.remoting.protocol.body.SubscriptionGroupList failed:class org.apache.rocketmq.remoting.protocol.body.GroupList failed:class org.apache.rocketmq.remoting.protocol.body.ElectMasterResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.QueryAssignmentResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.BrokerMemberGroup failed:class org.apache.rocketmq.remoting.protocol.heartbeat.HeartbeatData failed:class org.apache.rocketmq.remoting.protocol.body.CheckClientRequestBody failed:class org.apache.rocketmq.remoting.protocol.body.GetBrokerMemberGroupResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.ClusterInfo failed:class org.apache.rocketmq.remoting.protocol.body.QueryConsumeQueueResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.TopicList failed:class org.apache.rocketmq.remoting.protocol.body.QuerySubscriptionResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.ConsumeByWho failed:class org.apache.rocketmq.remoting.protocol.body.ConsumerRunningInfo failed:class org.apache.rocketmq.remoting.protocol.body.KVTable failed:class org.apache.rocketmq.remoting.protocol.body.CreateTopicListRequestBody

Hello, I received your response. I have tested this class separately in the current branch and the develop branch. No errors occur. There is no "failed: xx" error output in the class itself. May I ask how you run this test?

RemotingSerializableCompatTest.testCompatibilityCheck method , I change :

image

            boolean isSuccess = checkCompatible(instance, clazz);
            if (!isSuccess) {
                System.out.println("failed:" + clazz);
            } 

I changed it like this and there was no error. Is there a difference in the environment? May I ask what branch, platform and jdk you are running on?

yx9o avatar Jun 24 '25 00:06 yx9o

Hi @fuyou001 , please help review again. According to your review, I added the following serialization compatibility test tool class: RemotingSerializableCompatTest. It mainly does the following:

  1. Construct objects with default parameters for all subclasses of RemotingSerializable
  2. Use fastjson1 to serialize the object obtained in the first step
  3. Use fastjson2 to deserialize the json string obtained in the second step
  4. Compare the object deserialized in the third step with the object constructed in the first step, and compare all attribute values. Their comparisons are all passed

When running RemotingSerializableCompatTest, I encountered failed classes. Here's the output for your review: failed:class org.apache.rocketmq.remoting.protocol.body.RegisterBrokerBody failed:class org.apache.rocketmq.remoting.protocol.header.GetConsumerListByGroupResponseBody failed:class org.apache.rocketmq.remoting.protocol.route.TopicRouteData failed:class org.apache.rocketmq.remoting.protocol.statictopic.TopicRemappingDetailWrapper failed:class org.apache.rocketmq.remoting.protocol.body.SubscriptionGroupList failed:class org.apache.rocketmq.remoting.protocol.body.GroupList failed:class org.apache.rocketmq.remoting.protocol.body.ElectMasterResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.QueryAssignmentResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.BrokerMemberGroup failed:class org.apache.rocketmq.remoting.protocol.heartbeat.HeartbeatData failed:class org.apache.rocketmq.remoting.protocol.body.CheckClientRequestBody failed:class org.apache.rocketmq.remoting.protocol.body.GetBrokerMemberGroupResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.ClusterInfo failed:class org.apache.rocketmq.remoting.protocol.body.QueryConsumeQueueResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.TopicList failed:class org.apache.rocketmq.remoting.protocol.body.QuerySubscriptionResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.ConsumeByWho failed:class org.apache.rocketmq.remoting.protocol.body.ConsumerRunningInfo failed:class org.apache.rocketmq.remoting.protocol.body.KVTable failed:class org.apache.rocketmq.remoting.protocol.body.CreateTopicListRequestBody

Hello, I received your response. I have tested this class separately in the current branch and the develop branch. No errors occur. There is no "failed: xx" error output in the class itself. May I ask how you run this test?

RemotingSerializableCompatTest.testCompatibilityCheck method , I change : image

            boolean isSuccess = checkCompatible(instance, clazz);
            if (!isSuccess) {
                System.out.println("failed:" + clazz);
            } 

I changed it like this and there was no error. Is there a difference in the environment? May I ask what branch, platform and jdk you are running on?

This PR branch and uses JDK 11.

There are many issues concerning compatibility reported at https://github.com/alibaba/fastjson2/issues.

Be extremely cautious Upgrading to fastjson2 involves high risks

fuyou001 avatar Jun 30 '25 06:06 fuyou001

Hi @fuyou001 , please help review again. According to your review, I added the following serialization compatibility test tool class: RemotingSerializableCompatTest. It mainly does the following:

  1. Construct objects with default parameters for all subclasses of RemotingSerializable
  2. Use fastjson1 to serialize the object obtained in the first step
  3. Use fastjson2 to deserialize the json string obtained in the second step
  4. Compare the object deserialized in the third step with the object constructed in the first step, and compare all attribute values. Their comparisons are all passed

When running RemotingSerializableCompatTest, I encountered failed classes. Here's the output for your review: failed:class org.apache.rocketmq.remoting.protocol.body.RegisterBrokerBody failed:class org.apache.rocketmq.remoting.protocol.header.GetConsumerListByGroupResponseBody failed:class org.apache.rocketmq.remoting.protocol.route.TopicRouteData failed:class org.apache.rocketmq.remoting.protocol.statictopic.TopicRemappingDetailWrapper failed:class org.apache.rocketmq.remoting.protocol.body.SubscriptionGroupList failed:class org.apache.rocketmq.remoting.protocol.body.GroupList failed:class org.apache.rocketmq.remoting.protocol.body.ElectMasterResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.QueryAssignmentResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.BrokerMemberGroup failed:class org.apache.rocketmq.remoting.protocol.heartbeat.HeartbeatData failed:class org.apache.rocketmq.remoting.protocol.body.CheckClientRequestBody failed:class org.apache.rocketmq.remoting.protocol.body.GetBrokerMemberGroupResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.ClusterInfo failed:class org.apache.rocketmq.remoting.protocol.body.QueryConsumeQueueResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.TopicList failed:class org.apache.rocketmq.remoting.protocol.body.QuerySubscriptionResponseBody failed:class org.apache.rocketmq.remoting.protocol.body.ConsumeByWho failed:class org.apache.rocketmq.remoting.protocol.body.ConsumerRunningInfo failed:class org.apache.rocketmq.remoting.protocol.body.KVTable failed:class org.apache.rocketmq.remoting.protocol.body.CreateTopicListRequestBody

Hello, I received your response. I have tested this class separately in the current branch and the develop branch. No errors occur. There is no "failed: xx" error output in the class itself. May I ask how you run this test?

RemotingSerializableCompatTest.testCompatibilityCheck method , I change : image

            boolean isSuccess = checkCompatible(instance, clazz);
            if (!isSuccess) {
                System.out.println("failed:" + clazz);
            } 

I changed it like this and there was no error. Is there a difference in the environment? May I ask what branch, platform and jdk you are running on?

This PR branch and uses JDK 11.

There are many issues concerning compatibility reported at https://github.com/alibaba/fastjson2/issues.

Be extremely cautious Upgrading to fastjson2 involves high risks

I have passed the debugging under jdk11, please help review it again, thank you.

yx9o avatar Jun 30 '25 23:06 yx9o

@yx9o The conflicts need to be handled image

fuyou001 avatar Jul 21 '25 02:07 fuyou001

@yx9o The conflicts need to be handled image

The conflict has been resolved, please review again, thank you.

yx9o avatar Jul 21 '25 04:07 yx9o

All fields in classes used for Fastjson serialization/deserialization must be annotated with @JSONField, requiring verification tools for annotation compliance.

@yx9o

fuyou001 avatar Jul 26 '25 07:07 fuyou001

image image @yx9o Some problems were encountered during testing

guyinyou avatar Sep 10 '25 07:09 guyinyou

image image @yx9o Some problems were encountered during testing

Corrected, please review and verify again, thank you.

yx9o avatar Sep 19 '25 16:09 yx9o

@yx9o Some problems were encountered during testing yet

com.alibaba.fastjson2.JSONException: not support input EA==, offset 22, character ", line 1, column 23, fastjson-version 2.0.43 {"acks":[{"b":"EA==","c":"gid-72","it":60000,"pt":1758617828232,"q":0,"r":"0","rq":4,"so":245397,"t":"topic-a72"}],"brokerName":"rocketmq-broker-rmq-cn-htq4fg13h09-0"} at com.alibaba.fastjson2.JSONReader.readBinary(JSONReader.java:756) at com.alibaba.fastjson2.reader.ObjectReaderImplBitSet.readObject(ObjectReaderImplBitSet.java:44) at com.alibaba.fastjson2.reader.ObjectReaderImplBitSet.readObject(ObjectReaderImplBitSet.java:11) at com.alibaba.fastjson2.reader.ORG_20_18_BatchAck.readObject(Unknown Source) at com.alibaba.fastjson2.reader.ORG_18_2_BatchAckMessageRequestBody.readObject(Unknown Source) at com.alibaba.fastjson2.JSON.parseObject(JSON.java:1365) at org.apache.rocketmq.remoting.protocol.RemotingSerializable.fromJson(RemotingSerializable.java:64) at org.apache.rocketmq.remoting.protocol.RemotingSerializable.decode(RemotingSerializable.java:48) at org.apache.rocketmq.broker.processor.AckMessageProcessor.processRequest(AckMessageProcessor.java:170) at org.apache.rocketmq.broker.processor.AckMessageProcessor.processRequest(AckMessageProcessor.java:114) at org.apache.rocketmq.remoting.netty.NettyRemotingAbstract.lambda$buildProcessRequestHandler$2(NettyRemotingAbstract.java:426) at org.apache.rocketmq.remoting.netty.RequestTask.run(RequestTask.java:80) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:991)

guyinyou avatar Sep 23 '25 09:09 guyinyou

@yx9o Some problems were encountered during testing yet

com.alibaba.fastjson2.JSONException: not support input EA==, offset 22, character ", line 1, column 23, fastjson-version 2.0.43 {"acks":[{"b":"EA==","c":"gid-72","it":60000,"pt":1758617828232,"q":0,"r":"0","rq":4,"so":245397,"t":"topic-a72"}],"brokerName":"rocketmq-broker-rmq-cn-htq4fg13h09-0"} at com.alibaba.fastjson2.JSONReader.readBinary(JSONReader.java:756) at com.alibaba.fastjson2.reader.ObjectReaderImplBitSet.readObject(ObjectReaderImplBitSet.java:44) at com.alibaba.fastjson2.reader.ObjectReaderImplBitSet.readObject(ObjectReaderImplBitSet.java:11) at com.alibaba.fastjson2.reader.ORG_20_18_BatchAck.readObject(Unknown Source) at com.alibaba.fastjson2.reader.ORG_18_2_BatchAckMessageRequestBody.readObject(Unknown Source) at com.alibaba.fastjson2.JSON.parseObject(JSON.java:1365) at org.apache.rocketmq.remoting.protocol.RemotingSerializable.fromJson(RemotingSerializable.java:64) at org.apache.rocketmq.remoting.protocol.RemotingSerializable.decode(RemotingSerializable.java:48) at org.apache.rocketmq.broker.processor.AckMessageProcessor.processRequest(AckMessageProcessor.java:170) at org.apache.rocketmq.broker.processor.AckMessageProcessor.processRequest(AckMessageProcessor.java:114) at org.apache.rocketmq.remoting.netty.NettyRemotingAbstract.lambda$buildProcessRequestHandler$2(NettyRemotingAbstract.java:426) at org.apache.rocketmq.remoting.netty.RequestTask.run(RequestTask.java:80) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:991)

The adjustment has been completed, please review again, thank you.

yx9o avatar Sep 23 '25 15:09 yx9o

希望增加bitset的兼容性测试,在目前的测试中该字段是null,可以增加模拟值去比较兼容性。 image

guyinyou avatar Oct 17 '25 07:10 guyinyou

希望增加bitset的兼容性测试,在目前的测试中该字段是null,可以增加模拟值去比较兼容性。 image

Added, please review again, thank you.

yx9o avatar Oct 17 '25 15:10 yx9o