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

jianbin pushed a commit to branch 2.x
in repository https://gitbox.apache.org/repos/asf/incubator-seata.git


The following commit(s) were added to refs/heads/2.x by this push:
     new 2a7dc88f56 optimize: load SeataSerializer by version (#6208)
2a7dc88f56 is described below

commit 2a7dc88f567ab76c1ad614486161669bb080327e
Author: justabug <bug...@users.noreply.github.com>
AuthorDate: Fri Jun 21 11:40:19 2024 +0800

    optimize: load SeataSerializer by version (#6208)
---
 changes/en-us/2.x.md                               |   2 +
 changes/zh-cn/2.x.md                               |   3 +
 .../seata/core/protocol/ProtocolConstants.java     |  12 +-
 .../seata/core/rpc/netty/v1/ProtocolV1Decoder.java |   2 +-
 .../seata/core/rpc/netty/v1/ProtocolV1Encoder.java |   2 +-
 .../core/serializer/SerializerServiceLoader.java   |  34 ++++-
 .../serializer/seata/MessageCodecFactory.java      |  21 ++-
 .../seata/serializer/seata/SeataSerializer.java    | 162 +++++++++++++++++----
 .../seata/protocol/BatchResultMessageCodec.java    |   9 +-
 .../seata/protocol/MergeResultMessageCodec.java    |   9 +-
 .../seata/protocol/MergedWarpMessageCodec.java     |   9 +-
 .../protocol/BatchResultMessageSerializerTest.java |   3 +-
 .../protocol/MergeResultMessageSerializerTest.java |   4 +-
 .../protocol/MergedWarpMessageSerializerTest.java  |   4 +-
 .../protocol/RegisterRMRequestSerializerTest.java  |   4 +-
 .../protocol/RegisterRMResponseSerializerTest.java |   4 +-
 .../protocol/RegisterTMRequestSerializerTest.java  |   4 +-
 .../protocol/RegisterTMResponseSerializerTest.java |   4 +-
 .../BranchCommitRequestSerializerTest.java         |   3 +-
 .../BranchCommitResponseSerializerTest.java        |   3 +-
 .../BranchRegisterRequestSerializerTest.java       |   3 +-
 .../BranchRegisterResponseSerializerTest.java      |   3 +-
 .../BranchReportRequestSerializerTest.java         |   3 +-
 .../BranchReportResponseSerializerTest.java        |   3 +-
 .../BranchRollbackRequestSerializerTest.java       |   3 +-
 .../BranchRollbackResponseSerializerTest.java      |   3 +-
 .../GlobalBeginRequestSerializerTest.java          |   3 +-
 .../GlobalBeginResponseSerializerTest.java         |   3 +-
 .../transaction/GlobalCommitRequestCodecTest.java  |   3 +-
 .../GlobalCommitResponseSerializerTest.java        |   3 +-
 .../GlobalLockQueryRequestSerializerTest.java      |   3 +-
 .../GlobalLockQueryResponseSerializerTest.java     |   3 +-
 .../GlobalRollbackRequestCodecTest.java            |   3 +-
 .../GlobalRollbackResponseSerializerTest.java      |   3 +-
 .../transaction/GlobalStatusRequestCodecTest.java  |   3 +-
 .../GlobalStatusResponseSerializerTest.java        |   3 +-
 .../UndoLogDeleteRequestSerializerTest.java        |   3 +-
 37 files changed, 260 insertions(+), 89 deletions(-)

diff --git a/changes/en-us/2.x.md b/changes/en-us/2.x.md
index 80cdacec91..a015a2ec22 100644
--- a/changes/en-us/2.x.md
+++ b/changes/en-us/2.x.md
@@ -11,6 +11,7 @@ Add changes here for all PR submitted to the 2.x branch.
 
 ### optimize:
 - [[#6499](https://github.com/apache/incubator-seata/pull/6499)] split the 
task thread pool for committing and rollbacking statuses
+- [[#6208](https://github.com/apache/incubator-seata/pull/6208)] optimize : 
load SeataSerializer by version
 
 ### refactor:
 - [[#6534](https://github.com/apache/incubator-seata/pull/6534)] optimize: 
send async response
@@ -31,5 +32,6 @@ Thanks to these contributors for their code commits. Please 
report an unintended
 - [tuwenlin](https://github.com/tuwenlin)
 - [YeonCheolGit](https://github.com/YeonCheolGit)
 - [liuqiufeng](https://github.com/liuqiufeng)
+- [Bughue](https://github.com/Bughue)
 
 Also, we receive many valuable issues, questions and advices from our 
community. Thanks for you all.
diff --git a/changes/zh-cn/2.x.md b/changes/zh-cn/2.x.md
index b0ded32b7a..7e8a0ba21c 100644
--- a/changes/zh-cn/2.x.md
+++ b/changes/zh-cn/2.x.md
@@ -10,6 +10,8 @@
 
 ### optimize:
 - [[#6499](https://github.com/apache/incubator-seata/pull/6499)] 拆分 committing 
和 rollbacking 状态的任务线程池
+- [[#6208](https://github.com/apache/incubator-seata/pull/6208)] 支持多版本的Seata序列化
+
 
 ### refactor:
 - [[#6534](https://github.com/apache/incubator-seata/pull/6534)] 优化: 发送异步响应
@@ -27,5 +29,6 @@
 - [tuwenlin](https://github.com/tuwenlin)
 - [YeonCheolGit](https://github.com/YeonCheolGit)
 - [liuqiufeng](https://github.com/liuqiufeng)
+- [Bughue](https://github.com/Bughue)
 
 同时,我们收到了社区反馈的很多有价值的issue和建议,非常感谢大家。
diff --git 
a/core/src/main/java/org/apache/seata/core/protocol/ProtocolConstants.java 
b/core/src/main/java/org/apache/seata/core/protocol/ProtocolConstants.java
index 7848b4bb66..4b2b7ef870 100644
--- a/core/src/main/java/org/apache/seata/core/protocol/ProtocolConstants.java
+++ b/core/src/main/java/org/apache/seata/core/protocol/ProtocolConstants.java
@@ -32,10 +32,20 @@ public interface ProtocolConstants {
      */
     byte[] MAGIC_CODE_BYTES = {(byte) 0xda, (byte) 0xda};
 
+    /**
+     * Old protocol version
+     */
+    byte VERSION_0 = 0;
+
+    /**
+     * Protocol version
+     */
+    byte VERSION_1 = 1;
+
     /**
      * Protocol version
      */
-    byte VERSION = 1;
+    byte VERSION = VERSION_1;
 
     /**
      * Max frame length
diff --git 
a/core/src/main/java/org/apache/seata/core/rpc/netty/v1/ProtocolV1Decoder.java 
b/core/src/main/java/org/apache/seata/core/rpc/netty/v1/ProtocolV1Decoder.java
index 68a12b52d3..eb65fd20cf 100644
--- 
a/core/src/main/java/org/apache/seata/core/rpc/netty/v1/ProtocolV1Decoder.java
+++ 
b/core/src/main/java/org/apache/seata/core/rpc/netty/v1/ProtocolV1Decoder.java
@@ -152,7 +152,7 @@ public class ProtocolV1Decoder extends 
LengthFieldBasedFrameDecoder {
                 bs = compressor.decompress(bs);
                 SerializerType protocolType = 
SerializerType.getByCode(rpcMessage.getCodec());
                 if (this.supportDeSerializerTypes.contains(protocolType)) {
-                    Serializer serializer = 
SerializerServiceLoader.load(protocolType);
+                    Serializer serializer = 
SerializerServiceLoader.load(protocolType, ProtocolConstants.VERSION_1);
                     rpcMessage.setBody(serializer.deserialize(bs));
                 } else {
                     throw new IllegalArgumentException("SerializerType not 
match: " + protocolType.name());
diff --git 
a/core/src/main/java/org/apache/seata/core/rpc/netty/v1/ProtocolV1Encoder.java 
b/core/src/main/java/org/apache/seata/core/rpc/netty/v1/ProtocolV1Encoder.java
index 54b1abd9f6..7c32e98f2d 100644
--- 
a/core/src/main/java/org/apache/seata/core/rpc/netty/v1/ProtocolV1Encoder.java
+++ 
b/core/src/main/java/org/apache/seata/core/rpc/netty/v1/ProtocolV1Encoder.java
@@ -93,7 +93,7 @@ public class ProtocolV1Encoder extends MessageToByteEncoder {
                 if (messageType != ProtocolConstants.MSGTYPE_HEARTBEAT_REQUEST
                         && messageType != 
ProtocolConstants.MSGTYPE_HEARTBEAT_RESPONSE) {
                     // heartbeat has no body
-                    Serializer serializer = 
SerializerServiceLoader.load(SerializerType.getByCode(rpcMessage.getCodec()));
+                    Serializer serializer = 
SerializerServiceLoader.load(SerializerType.getByCode(rpcMessage.getCodec()), 
ProtocolConstants.VERSION_1);
                     bodyBytes = serializer.serialize(rpcMessage.getBody());
                     Compressor compressor = 
CompressorFactory.getCompressor(rpcMessage.getCompressor());
                     bodyBytes = compressor.compress(bodyBytes);
diff --git 
a/core/src/main/java/org/apache/seata/core/serializer/SerializerServiceLoader.java
 
b/core/src/main/java/org/apache/seata/core/serializer/SerializerServiceLoader.java
index a6f54ffe3d..0503fa8f73 100644
--- 
a/core/src/main/java/org/apache/seata/core/serializer/SerializerServiceLoader.java
+++ 
b/core/src/main/java/org/apache/seata/core/serializer/SerializerServiceLoader.java
@@ -35,23 +35,26 @@ import static 
org.apache.seata.core.serializer.SerializerType.KRYO;
 import static org.apache.seata.core.serializer.SerializerType.PROTOBUF;
 import static org.apache.seata.core.serializer.SerializerType.SEATA;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * The Service Loader for the interface {@link Serializer}
- *
  */
 public final class SerializerServiceLoader {
 
     private static final Logger LOGGER = 
LoggerFactory.getLogger(SerializerServiceLoader.class);
     private static final Configuration CONFIG = 
ConfigurationFactory.getInstance();
 
-    private static final SerializerType[] DEFAULT_SERIALIZER_TYPE = new 
SerializerType[] {SEATA, PROTOBUF, KRYO, HESSIAN};
+    private static final SerializerType[] DEFAULT_SERIALIZER_TYPE = new 
SerializerType[]{SEATA, PROTOBUF, KRYO, HESSIAN};
+
+    private final static Map<String, Serializer> SERIALIZER_MAP = new 
HashMap<>();
 
     private static final String SPLIT_CHAR = ",";
 
     private SerializerServiceLoader() {
     }
 
-
     private static final String PROTOBUF_SERIALIZER_CLASS_NAME = 
"org.apache.seata.serializer.protobuf.ProtobufSerializer";
 
     /**
@@ -61,7 +64,7 @@ public final class SerializerServiceLoader {
      * @return the service of {@link Serializer}
      * @throws EnhancedServiceNotFoundException the enhanced service not found 
exception
      */
-    public static Serializer load(SerializerType type) throws 
EnhancedServiceNotFoundException {
+    public static Serializer load(SerializerType type, byte version) throws 
EnhancedServiceNotFoundException {
         if (type == SerializerType.PROTOBUF) {
             try {
                 ReflectionUtil.getClassByName(PROTOBUF_SERIALIZER_CLASS_NAME);
@@ -70,9 +73,28 @@ public final class SerializerServiceLoader {
                         "Please manually reference 
'org.apache.seata:seata-serializer-protobuf' dependency ", e);
             }
         }
-        return EnhancedServiceLoader.load(Serializer.class, type.name());
+
+        String key = serialzerKey(type, version);
+        Serializer serializer = SERIALIZER_MAP.get(key);
+        if (serializer == null) {
+            if (type == SerializerType.SEATA) {
+                serializer = EnhancedServiceLoader.load(Serializer.class, 
type.name(), new Object[]{version});
+            } else {
+                serializer = EnhancedServiceLoader.load(Serializer.class, 
type.name());
+            }
+            SERIALIZER_MAP.put(key, serializer);
+        }
+        return serializer;
     }
 
+    private static String serialzerKey(SerializerType type, byte version) {
+        if (type == SerializerType.SEATA) {
+            return type.name() + version;
+        }
+        return type.name();
+    }
+
+
     public static List<SerializerType> getSupportedSerializers() {
         List<SerializerType> supportedSerializers = new ArrayList<>();
         String defaultSupportSerializers = 
Arrays.stream(DEFAULT_SERIALIZER_TYPE).map(SerializerType::name).collect(Collectors.joining(SPLIT_CHAR));
@@ -93,4 +115,4 @@ public final class SerializerServiceLoader {
         return getSupportedSerializers().get(0);
     }
 
-}
+}
\ No newline at end of file
diff --git 
a/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/MessageCodecFactory.java
 
b/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/MessageCodecFactory.java
index e7a555621a..2675751cd2 100644
--- 
a/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/MessageCodecFactory.java
+++ 
b/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/MessageCodecFactory.java
@@ -80,7 +80,6 @@ import 
org.apache.seata.core.protocol.transaction.UndoLogDeleteRequest;
 
 /**
  * The type Message codec factory.
- *
  */
 public class MessageCodecFactory {
 
@@ -95,8 +94,8 @@ public class MessageCodecFactory {
      * @param abstractMessage the abstract message
      * @return the message codec
      */
-    public static MessageSeataCodec getMessageCodec(AbstractMessage 
abstractMessage) {
-        return getMessageCodec(abstractMessage.getTypeCode());
+    public static MessageSeataCodec getMessageCodec(AbstractMessage 
abstractMessage, byte version) {
+        return getMessageCodec(abstractMessage.getTypeCode(), version);
     }
 
     /**
@@ -105,14 +104,14 @@ public class MessageCodecFactory {
      * @param typeCode the type code
      * @return the msg instance by code
      */
-    public static MessageSeataCodec getMessageCodec(short typeCode) {
+    public static MessageSeataCodec getMessageCodec(short typeCode, byte 
version) {
         MessageSeataCodec msgCodec = null;
         switch (typeCode) {
             case MessageType.TYPE_SEATA_MERGE:
-                msgCodec = new MergedWarpMessageCodec();
+                msgCodec = new MergedWarpMessageCodec(version);
                 break;
             case MessageType.TYPE_SEATA_MERGE_RESULT:
-                msgCodec = new MergeResultMessageCodec();
+                msgCodec = new MergeResultMessageCodec(version);
                 break;
             case MessageType.TYPE_REG_CLT:
                 msgCodec = new RegisterTMRequestCodec();
@@ -136,7 +135,7 @@ public class MessageCodecFactory {
                 msgCodec = new GlobalReportRequestCodec();
                 break;
             case MessageType.TYPE_BATCH_RESULT_MSG:
-                msgCodec = new BatchResultMessageCodec();
+                msgCodec = new BatchResultMessageCodec(version);
                 break;
             default:
                 break;
@@ -147,7 +146,7 @@ public class MessageCodecFactory {
         }
 
         try {
-            msgCodec = getMergeRequestMessageSeataCodec(typeCode);
+            msgCodec = getMergeRequestMessageSeataCodec(typeCode, version);
         } catch (Exception exx) {
         }
 
@@ -155,7 +154,7 @@ public class MessageCodecFactory {
             return msgCodec;
         }
 
-        msgCodec = getMergeResponseMessageSeataCodec(typeCode);
+        msgCodec = getMergeResponseMessageSeataCodec(typeCode, version);
 
         return msgCodec;
     }
@@ -166,7 +165,7 @@ public class MessageCodecFactory {
      * @param typeCode the type code
      * @return the merge request instance by code
      */
-    protected static MessageSeataCodec getMergeRequestMessageSeataCodec(int 
typeCode) {
+    protected static MessageSeataCodec getMergeRequestMessageSeataCodec(int 
typeCode, byte version) {
         switch (typeCode) {
             case MessageType.TYPE_GLOBAL_BEGIN:
                 return new GlobalBeginRequestCodec();
@@ -195,7 +194,7 @@ public class MessageCodecFactory {
      * @param typeCode the type code
      * @return the merge response instance by code
      */
-    protected static MessageSeataCodec getMergeResponseMessageSeataCodec(int 
typeCode) {
+    protected static MessageSeataCodec getMergeResponseMessageSeataCodec(int 
typeCode, byte version) {
         switch (typeCode) {
             case MessageType.TYPE_GLOBAL_BEGIN_RESULT:
                 return new GlobalBeginResponseCodec();
diff --git 
a/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/SeataSerializer.java
 
b/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/SeataSerializer.java
index b21b78a110..0e5bdb74c8 100644
--- 
a/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/SeataSerializer.java
+++ 
b/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/SeataSerializer.java
@@ -16,52 +16,153 @@
  */
 package org.apache.seata.serializer.seata;
 
-import java.nio.ByteBuffer;
-
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import org.apache.seata.common.loader.LoadLevel;
+import org.apache.seata.common.loader.Scope;
 import org.apache.seata.common.util.BufferUtils;
 import org.apache.seata.core.protocol.AbstractMessage;
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.core.serializer.Serializer;
 
+import java.nio.ByteBuffer;
+
 /**
  * The Seata codec.
- *
  */
-@LoadLevel(name = "SEATA")
+@LoadLevel(name = "SEATA", scope = Scope.PROTOTYPE)
 public class SeataSerializer implements Serializer {
+    Serializer versionSeataSerializer;
+
+    public SeataSerializer(Byte version) {
+        if (version == ProtocolConstants.VERSION_0) {
+            versionSeataSerializer = SeataSerializerV0.getInstance();
+        } else if (version == ProtocolConstants.VERSION_1) {
+            versionSeataSerializer = SeataSerializerV1.getInstance();
+        }
+        if (versionSeataSerializer == null) {
+            throw new UnsupportedOperationException("version is not 
supported");
+        }
+    }
 
     @Override
     public <T> byte[] serialize(T t) {
-        if (!(t instanceof AbstractMessage)) {
-            throw new IllegalArgumentException("AbstractMessage isn't 
available.");
-        }
-        AbstractMessage abstractMessage = (AbstractMessage)t;
-        //typecode
-        short typecode = abstractMessage.getTypeCode();
-        //msg codec
-        MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typecode);
-        //get empty ByteBuffer
-        ByteBuf out = Unpooled.buffer(1024);
-        //msg encode
-        messageCodec.encode(t, out);
-        byte[] body = new byte[out.readableBytes()];
-        out.readBytes(body);
-
-        //typecode + body
-        ByteBuffer byteBuffer = ByteBuffer.allocate(2 + body.length);
-        byteBuffer.putShort(typecode);
-        byteBuffer.put(body);
-
-        BufferUtils.flip(byteBuffer);
-        byte[] content = new byte[byteBuffer.limit()];
-        byteBuffer.get(content);
-        return content;
+        return versionSeataSerializer.serialize(t);
     }
 
     @Override
     public <T> T deserialize(byte[] bytes) {
+        return versionSeataSerializer.deserialize(bytes);
+    }
+
+
+    static class SeataSerializerV1 implements Serializer {
+
+        private static volatile SeataSerializerV1 instance;
+
+        private SeataSerializerV1() {
+        }
+
+        public static SeataSerializerV1 getInstance() {
+            if (instance == null) {
+                synchronized (SeataSerializerV1.class) {
+                    if (instance == null) {
+                        instance = new SeataSerializerV1();
+                    }
+                }
+            }
+            return instance;
+        }
+
+        @Override
+        public <T> byte[] serialize(T t) {
+            if (!(t instanceof AbstractMessage)) {
+                throw new IllegalArgumentException("AbstractMessage isn't 
available.");
+            }
+            AbstractMessage abstractMessage = (AbstractMessage) t;
+            //type code
+            short typecode = abstractMessage.getTypeCode();
+            //msg codec
+            MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typecode, ProtocolConstants.VERSION_1);
+            //get empty ByteBuffer
+            ByteBuf out = Unpooled.buffer(1024);
+            //msg encode
+            messageCodec.encode(t, out);
+            byte[] body = new byte[out.readableBytes()];
+            out.readBytes(body);
+
+            ByteBuffer byteBuffer;
+
+            //typecode + body
+            byteBuffer = ByteBuffer.allocate(2 + body.length);
+            byteBuffer.putShort(typecode);
+            byteBuffer.put(body);
+
+            BufferUtils.flip(byteBuffer);
+            byte[] content = new byte[byteBuffer.limit()];
+            byteBuffer.get(content);
+            return content;
+        }
+
+        @Override
+        public <T> T deserialize(byte[] bytes) {
+            return deserializeByVersion(bytes, ProtocolConstants.VERSION_1);
+        }
+    }
+    static class SeataSerializerV0 implements Serializer {
+
+        private static volatile SeataSerializerV0 instance;
+
+        private SeataSerializerV0() {
+        }
+
+        public static SeataSerializerV0 getInstance() {
+            if (instance == null) {
+                synchronized (SeataSerializerV0.class) {
+                    if (instance == null) {
+                        instance = new SeataSerializerV0();
+                    }
+                }
+            }
+            return instance;
+        }
+
+        @Override
+        public <T> byte[] serialize(T t) {
+            if (!(t instanceof AbstractMessage)) {
+                throw new IllegalArgumentException("AbstractMessage isn't 
available.");
+            }
+            AbstractMessage abstractMessage = (AbstractMessage) t;
+            //type code
+            short typecode = abstractMessage.getTypeCode();
+            //msg codec
+            MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typecode, ProtocolConstants.VERSION_0);
+            //get empty ByteBuffer
+            ByteBuf out = Unpooled.buffer(1024);
+            //msg encode
+            messageCodec.encode(t, out);
+            byte[] body = new byte[out.readableBytes()];
+            out.readBytes(body);
+
+            ByteBuffer byteBuffer;
+            byteBuffer = ByteBuffer.allocate(body.length);
+
+            byteBuffer.put(body);
+
+            BufferUtils.flip(byteBuffer);
+            byte[] content = new byte[byteBuffer.limit()];
+            byteBuffer.get(content);
+            return content;
+        }
+
+        @Override
+        public <T> T deserialize(byte[] bytes) {
+            return deserializeByVersion(bytes, ProtocolConstants.VERSION_0);
+        }
+
+    }
+
+    private static <T> T deserializeByVersion(byte[] bytes, byte version) {
         if (bytes == null || bytes.length == 0) {
             throw new IllegalArgumentException("Nothing to decode.");
         }
@@ -78,10 +179,9 @@ public class SeataSerializer implements Serializer {
         //new Messgae
         AbstractMessage abstractMessage = 
MessageCodecFactory.getMessage(typecode);
         //get messageCodec
-        MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typecode);
+        MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typecode, version);
         //decode
         messageCodec.decode(abstractMessage, in);
-        return (T)abstractMessage;
+        return (T) abstractMessage;
     }
-
 }
diff --git 
a/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/protocol/BatchResultMessageCodec.java
 
b/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/protocol/BatchResultMessageCodec.java
index 4d6c1105cf..ba6d9774e3 100644
--- 
a/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/protocol/BatchResultMessageCodec.java
+++ 
b/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/protocol/BatchResultMessageCodec.java
@@ -35,6 +35,11 @@ import org.apache.seata.serializer.seata.MessageSeataCodec;
  */
 public class BatchResultMessageCodec extends AbstractMessageCodec {
 
+    private byte version;
+
+    public BatchResultMessageCodec(byte version) {
+        this.version = version;
+    }
     @Override
     public Class<?> getMessageClassType() {
         return BatchResultMessage.class;
@@ -53,7 +58,7 @@ public class BatchResultMessageCodec extends 
AbstractMessageCodec {
         for (final AbstractMessage msg : msgs) {
             final ByteBuf subBuffer = Unpooled.buffer(1024);
             short typeCode = msg.getTypeCode();
-            MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typeCode);
+            MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typeCode, version);
             messageCodec.encode(msg, subBuffer);
             buffer.writeShort(msg.getTypeCode());
             buffer.writeBytes(subBuffer);
@@ -107,7 +112,7 @@ public class BatchResultMessageCodec extends 
AbstractMessageCodec {
         for (int idx = 0; idx < msgNum; idx++) {
             short typeCode = byteBuffer.getShort();
             AbstractMessage abstractResultMessage = 
MessageCodecFactory.getMessage(typeCode);
-            MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typeCode);
+            MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typeCode, version);
             messageCodec.decode(abstractResultMessage, byteBuffer);
             msgs.add((AbstractResultMessage) abstractResultMessage);
         }
diff --git 
a/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/protocol/MergeResultMessageCodec.java
 
b/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/protocol/MergeResultMessageCodec.java
index ac5bc411c5..590a42e228 100644
--- 
a/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/protocol/MergeResultMessageCodec.java
+++ 
b/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/protocol/MergeResultMessageCodec.java
@@ -31,6 +31,11 @@ import org.apache.seata.core.protocol.MergeResultMessage;
  */
 public class MergeResultMessageCodec extends AbstractMessageCodec {
 
+    private byte version;
+
+    public MergeResultMessageCodec(byte version) {
+        this.version = version;
+    }
     @Override
     public Class<?> getMessageClassType() {
         return MergeResultMessage.class;
@@ -48,7 +53,7 @@ public class MergeResultMessageCodec extends 
AbstractMessageCodec {
             short typeCode = msg.getTypeCode();
             //put typeCode
             out.writeShort(typeCode);
-            MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typeCode);
+            MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typeCode, version);
             messageCodec.encode(msg, out);
         }
 
@@ -91,7 +96,7 @@ public class MergeResultMessageCodec extends 
AbstractMessageCodec {
         for (int idx = 0; idx < msgNum; idx++) {
             short typeCode = byteBuffer.getShort();
             AbstractMessage abstractResultMessage = 
MessageCodecFactory.getMessage(typeCode);
-            MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typeCode);
+            MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typeCode, version);
             messageCodec.decode(abstractResultMessage, byteBuffer);
             msgs[idx] = (AbstractResultMessage)abstractResultMessage;
         }
diff --git 
a/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/protocol/MergedWarpMessageCodec.java
 
b/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/protocol/MergedWarpMessageCodec.java
index 6e71ed0169..40bbcd05a6 100644
--- 
a/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/protocol/MergedWarpMessageCodec.java
+++ 
b/serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/protocol/MergedWarpMessageCodec.java
@@ -33,6 +33,11 @@ import org.apache.seata.core.protocol.MergedWarpMessage;
  */
 public class MergedWarpMessageCodec extends AbstractMessageCodec {
 
+    private byte version;
+
+    public MergedWarpMessageCodec(byte version) {
+        this.version = version;
+    }
     @Override
     public Class<?> getMessageClassType() {
         return MergedWarpMessage.class;
@@ -51,7 +56,7 @@ public class MergedWarpMessageCodec extends 
AbstractMessageCodec {
         for (final AbstractMessage msg : msgs) {
             final ByteBuf subBuffer = Unpooled.buffer(1024);
             short typeCode = msg.getTypeCode();
-            MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typeCode);
+            MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typeCode, version);
             messageCodec.encode(msg, subBuffer);
             buffer.writeShort(msg.getTypeCode());
             buffer.writeBytes(subBuffer);
@@ -97,7 +102,7 @@ public class MergedWarpMessageCodec extends 
AbstractMessageCodec {
         for (int idx = 0; idx < msgNum; idx++) {
             short typeCode = byteBuffer.getShort();
             AbstractMessage abstractMessage = 
MessageCodecFactory.getMessage(typeCode);
-            MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typeCode);
+            MessageSeataCodec messageCodec = 
MessageCodecFactory.getMessageCodec(typeCode, version);
             messageCodec.decode(abstractMessage, byteBuffer);
             msgs.add(abstractMessage);
         }
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/BatchResultMessageSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/BatchResultMessageSerializerTest.java
index 7da24e0954..ca7ab1a434 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/BatchResultMessageSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/BatchResultMessageSerializerTest.java
@@ -22,6 +22,7 @@ import java.util.List;
 import org.apache.seata.core.model.BranchStatus;
 import org.apache.seata.core.protocol.AbstractResultMessage;
 import org.apache.seata.core.protocol.BatchResultMessage;
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.core.protocol.ResultCode;
 import org.apache.seata.core.protocol.transaction.BranchCommitResponse;
 import org.apache.seata.serializer.seata.SeataSerializer;
@@ -39,7 +40,7 @@ public class BatchResultMessageSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
 
     @Test
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/MergeResultMessageSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/MergeResultMessageSerializerTest.java
index ee1ae8b83e..b777710058 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/MergeResultMessageSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/MergeResultMessageSerializerTest.java
@@ -23,7 +23,7 @@ import org.apache.seata.core.protocol.MergeResultMessage;
 import org.apache.seata.core.protocol.ResultCode;
 import org.apache.seata.core.protocol.transaction.GlobalBeginResponse;
 import org.junit.jupiter.api.Test;
-
+import org.apache.seata.core.protocol.ProtocolConstants;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /**
@@ -35,7 +35,7 @@ public class MergeResultMessageSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/MergedWarpMessageSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/MergedWarpMessageSerializerTest.java
index 4996210977..98cce56632 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/MergedWarpMessageSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/MergedWarpMessageSerializerTest.java
@@ -24,7 +24,7 @@ import org.apache.seata.core.protocol.MergedWarpMessage;
 import org.apache.seata.core.protocol.transaction.GlobalBeginRequest;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.junit.jupiter.api.Test;
-
+import org.apache.seata.core.protocol.ProtocolConstants;
 import static org.assertj.core.api.Assertions.assertThat;
 
 
@@ -37,7 +37,7 @@ public class MergedWarpMessageSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterRMRequestSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterRMRequestSerializerTest.java
index 46a73801db..b469bada98 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterRMRequestSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterRMRequestSerializerTest.java
@@ -19,7 +19,7 @@ package org.apache.seata.serializer.seata.protocol;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.protocol.RegisterRMRequest;
 import org.junit.jupiter.api.Test;
-
+import org.apache.seata.core.protocol.ProtocolConstants;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /**
@@ -31,7 +31,7 @@ public class RegisterRMRequestSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterRMResponseSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterRMResponseSerializerTest.java
index b0115a0481..c766eb203a 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterRMResponseSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterRMResponseSerializerTest.java
@@ -20,7 +20,7 @@ import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.protocol.RegisterRMResponse;
 import org.apache.seata.core.protocol.ResultCode;
 import org.junit.jupiter.api.Test;
-
+import org.apache.seata.core.protocol.ProtocolConstants;
 import static org.assertj.core.api.Assertions.assertThat;
 
 
@@ -33,7 +33,7 @@ public class RegisterRMResponseSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterTMRequestSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterTMRequestSerializerTest.java
index f3112aa1e2..73c53e89ae 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterTMRequestSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterTMRequestSerializerTest.java
@@ -24,7 +24,7 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
-
+import org.apache.seata.core.protocol.ProtocolConstants;
 import static io.netty.buffer.Unpooled.buffer;
 import static org.assertj.core.api.Assertions.assertThat;
 
@@ -37,7 +37,7 @@ public class RegisterTMRequestSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     private static       RegisterTMRequest       registerTMRequest;
     private static       AbstractIdentifyRequest air;
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterTMResponseSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterTMResponseSerializerTest.java
index 349ef19494..b2cbb88235 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterTMResponseSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/RegisterTMResponseSerializerTest.java
@@ -20,7 +20,7 @@ import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.protocol.RegisterTMResponse;
 import org.apache.seata.core.protocol.ResultCode;
 import org.junit.jupiter.api.Test;
-
+import org.apache.seata.core.protocol.ProtocolConstants;
 import static org.assertj.core.api.Assertions.assertThat;
 
 /**
@@ -32,7 +32,7 @@ public class RegisterTMResponseSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchCommitRequestSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchCommitRequestSerializerTest.java
index 46f512ad91..fa66b63a35 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchCommitRequestSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchCommitRequestSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.protocol.transaction.BranchCommitRequest;
@@ -32,7 +33,7 @@ public class BranchCommitRequestSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchCommitResponseSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchCommitResponseSerializerTest.java
index d9e0286130..d16ccbfa10 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchCommitResponseSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchCommitResponseSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.exception.TransactionExceptionCode;
 import org.apache.seata.core.model.BranchStatus;
@@ -34,7 +35,7 @@ public class BranchCommitResponseSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRegisterRequestSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRegisterRequestSerializerTest.java
index dbd380fa54..dd18665a46 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRegisterRequestSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRegisterRequestSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.protocol.transaction.BranchRegisterRequest;
@@ -32,7 +33,7 @@ public class BranchRegisterRequestSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRegisterResponseSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRegisterResponseSerializerTest.java
index ef0db9b0be..d10bf6f09a 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRegisterResponseSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRegisterResponseSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.exception.TransactionExceptionCode;
 import org.apache.seata.core.protocol.ResultCode;
@@ -33,7 +34,7 @@ public class BranchRegisterResponseSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchReportRequestSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchReportRequestSerializerTest.java
index a114c9d49b..0ea5c0d36f 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchReportRequestSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchReportRequestSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.model.BranchStatus;
 import org.apache.seata.core.model.BranchType;
@@ -33,7 +34,7 @@ public class BranchReportRequestSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchReportResponseSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchReportResponseSerializerTest.java
index 0edbc30f00..2a1fea6cbf 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchReportResponseSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchReportResponseSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.exception.TransactionExceptionCode;
 import org.apache.seata.core.protocol.ResultCode;
@@ -33,7 +34,7 @@ public class BranchReportResponseSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRollbackRequestSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRollbackRequestSerializerTest.java
index 2a7d30a52e..a73f623a1d 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRollbackRequestSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRollbackRequestSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.protocol.transaction.BranchRollbackRequest;
@@ -32,7 +33,7 @@ public class BranchRollbackRequestSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRollbackResponseSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRollbackResponseSerializerTest.java
index 49dca44360..629ec6a4c2 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRollbackResponseSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/BranchRollbackResponseSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.exception.TransactionExceptionCode;
 import org.apache.seata.core.model.BranchStatus;
@@ -34,7 +35,7 @@ public class BranchRollbackResponseSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalBeginRequestSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalBeginRequestSerializerTest.java
index ddc3b82483..16cd14a8d8 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalBeginRequestSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalBeginRequestSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.protocol.transaction.GlobalBeginRequest;
 import org.junit.jupiter.api.Test;
@@ -31,7 +32,7 @@ public class GlobalBeginRequestSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalBeginResponseSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalBeginResponseSerializerTest.java
index 8b9cadfccf..c3bb00f93b 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalBeginResponseSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalBeginResponseSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.exception.TransactionExceptionCode;
 import org.apache.seata.core.protocol.ResultCode;
@@ -32,7 +33,7 @@ public class GlobalBeginResponseSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalCommitRequestCodecTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalCommitRequestCodecTest.java
index 8eea0d3aea..502d4db700 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalCommitRequestCodecTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalCommitRequestCodecTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.protocol.transaction.GlobalCommitRequest;
 import org.junit.jupiter.api.Test;
@@ -31,7 +32,7 @@ public class GlobalCommitRequestCodecTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalCommitResponseSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalCommitResponseSerializerTest.java
index a4418cb29f..d9f2f2e8d9 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalCommitResponseSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalCommitResponseSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.exception.TransactionExceptionCode;
 import org.apache.seata.core.model.GlobalStatus;
@@ -33,7 +34,7 @@ public class GlobalCommitResponseSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalLockQueryRequestSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalLockQueryRequestSerializerTest.java
index 5c2951fedb..be9a494f79 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalLockQueryRequestSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalLockQueryRequestSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.protocol.transaction.GlobalLockQueryRequest;
@@ -31,7 +32,7 @@ public class GlobalLockQueryRequestSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalLockQueryResponseSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalLockQueryResponseSerializerTest.java
index 2d367ca4da..1761a11c94 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalLockQueryResponseSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalLockQueryResponseSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.exception.TransactionExceptionCode;
 import org.apache.seata.core.protocol.ResultCode;
@@ -33,7 +34,7 @@ public class GlobalLockQueryResponseSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalRollbackRequestCodecTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalRollbackRequestCodecTest.java
index 1b6bf6a128..204bafa692 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalRollbackRequestCodecTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalRollbackRequestCodecTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.protocol.transaction.GlobalRollbackRequest;
 import org.junit.jupiter.api.Test;
@@ -31,7 +32,7 @@ public class GlobalRollbackRequestCodecTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalRollbackResponseSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalRollbackResponseSerializerTest.java
index 32cbd7b331..084cbc62c5 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalRollbackResponseSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalRollbackResponseSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.exception.TransactionExceptionCode;
 import org.apache.seata.core.model.GlobalStatus;
@@ -34,7 +35,7 @@ public class GlobalRollbackResponseSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalStatusRequestCodecTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalStatusRequestCodecTest.java
index 2fe58490c6..0ea3bbba80 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalStatusRequestCodecTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalStatusRequestCodecTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.protocol.transaction.GlobalStatusRequest;
 import org.junit.jupiter.api.Test;
@@ -31,7 +32,7 @@ public class GlobalStatusRequestCodecTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalStatusResponseSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalStatusResponseSerializerTest.java
index fc1ebe7354..9122db6d3e 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalStatusResponseSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/GlobalStatusResponseSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.exception.TransactionExceptionCode;
 import org.apache.seata.core.model.GlobalStatus;
@@ -33,7 +34,7 @@ public class GlobalStatusResponseSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.
diff --git 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/UndoLogDeleteRequestSerializerTest.java
 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/UndoLogDeleteRequestSerializerTest.java
index 3c27423904..17ff921034 100644
--- 
a/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/UndoLogDeleteRequestSerializerTest.java
+++ 
b/serializer/seata-serializer-seata/src/test/java/org/apache/seata/serializer/seata/protocol/transaction/UndoLogDeleteRequestSerializerTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.seata.serializer.seata.protocol.transaction;
 
+import org.apache.seata.core.protocol.ProtocolConstants;
 import org.apache.seata.serializer.seata.SeataSerializer;
 import org.apache.seata.core.model.BranchType;
 import org.apache.seata.core.protocol.transaction.UndoLogDeleteRequest;
@@ -32,7 +33,7 @@ public class UndoLogDeleteRequestSerializerTest {
     /**
      * The Seata codec.
      */
-    SeataSerializer seataSerializer = new SeataSerializer();
+    SeataSerializer seataSerializer = new 
SeataSerializer(ProtocolConstants.VERSION);
 
     /**
      * Test codec.


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@seata.apache.org
For additional commands, e-mail: notifications-h...@seata.apache.org

Reply via email to