You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@seata.apache.org by "vincent50411 (via GitHub)" <gi...@apache.org> on 2025/12/15 12:12:04 UTC
[D] 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败 [incubator-seata]
GitHub user vincent50411 created a discussion: 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败
**环境说明:**生产环境中业务服务和seata server都是单节点部署,业务表中存在update time时间戳(6),使用postgresql 15数据库。
**业务场景:**业务服务A更新A表一条记录得字段A_1后,调用业务服务B更新B表数据,业务服务B又调用A服务更新A表同一条记录的字段A_2,当业务执行异常后,执行全局回滚,业务服务A中提示全局回滚失败,日志记录显示:
2025-12-10 11:13:57.725 INFO 1 TID:N/A --- [rpcDispatch_RMROLE_1_2_16] o.a.s.c.r.p.c.RmBranchRollbackProcessor : rm handle branch rollback process:BranchRollbackRequest{xid='10.232.68.199:8091:5567173722488930773', branchId=5567173722488930775, branchType=AT, resourceId='jdbc:postgresql://xxxx:54321/haic', applicationData='null'}
2025-12-10 11:13:57.725 INFO 1 TID:N/A --- [rpcDispatch_RMROLE_1_2_16] o.a.seata.rm.AbstractRMHandler : Branch Rollbacking: 10.232.68.199:8091:5567173722488930773 5567173722488930775 jdbc:postgresql://xxxxx:54321/haic
**2025-12-10 11:13:57.729 INFO 1 TID:N/A --- [rpcDispatch_RMROLE_1_2_16] o.a.s.r.d.u.AbstractUndoExecutor : Field not equals, name update_datetime, old value 2025-12-10 11:13:57.671, new value 2025-12-10 11:13:57.7**
2025-12-10 11:13:57.730 ERROR 1 TID:N/A --- [rpcDispatch_RMROLE_1_2_16] o.a.s.r.d.DataSourceManager : branchRollback failed. branchType:[AT], xid:[10.232.68.199:8091:5567173722488930773], branchId:[5567173722488930775], resourceId:[jdbc:postgresql://xxxxx:54321/haic], applicationData:[null]. reason:[Branch session rollback failed because of dirty undo log, please delete the relevant undolog after manually calibrating the data. xid = 10.232.68.199:8091:5567173722488930773 branchId = 5567173722488930775]
2025-12-10 11:13:57.730 INFO 1 TID:N/A --- [rpcDispatch_RMROLE_1_2_16] o.a.seata.rm.AbstractRMHandler : Branch Rollbacked result: PhaseTwo_RollbackFailed_Unretryable
**问题说明**:业务服务A更新同一条记录2次,对应注册2个branch id,业务库中undo log表中存在2条log,branch id不同。日志显示update_datetime, old value 2025-12-10 11:13:57.671, new value 2025-12-10 11:13:57.7不一致,与undo log表对比,可以确认是rm回滚时,先回滚了最早修改的第一条记录,导致update time与当前记录不一致; 但是seata server未启用并行发送消息,branchsession 也做了逆序循环,理论上rm端应该是先收到最后一条branch才对,但是现象是发生了乱序。请问还有什么问题可能导致tc发送给rm的2条branch乱序?
**seata server端的配置:**
store.db.datasource=druid
store.db.dbType=postgresql
store.db.url=jdbc:postgresql://xxxxx:54321/seata
store.db.user=xxxx
store.db.password=xxxxx
store.db.driverClassName=org.postgresql.Driver
store.db.lockTable=lock_table
store.db.globalTable=global_table
store.db.queryLimit=100
store.db.maxConn=400
client.rm.lock.retryInterval=100
store.db.maxWait=5000
store.db.minConn=10
store.mode=db
store.db.branchTable=branch_table
service.vgroupMapping.my_tx_group=default
**seata 客户端配置:**
seata:
enabled: true
enable-auto-data-source-proxy: true
tx-service-group: my_tx_group
registry:
type: nacos
nacos:
application: seata-server
server-addr: ${common.nacos.server-addr}
namespace: ${common.nacos.discovery-namespace}
group: ${common.nacos.discovery-group}
cluster: default
username: ${common.nacos.discovery-username}
password: ${common.nacos.discovery-password}
config:
type: nacos
nacos:
server-addr: ${common.nacos.server-addr}
namespace: ${common.nacos.config-namespace}
group: ${common.nacos.discovery-group}
cluster: default
username: ${common.nacos.discovery-username}
password: ${common.nacos.discovery-password}
dataId: haic-seata.properties
GitHub link: https://github.com/apache/incubator-seata/discussions/7866
----
This is an automatically sent email for dev@seata.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@seata.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@seata.apache.org
For additional commands, e-mail: dev-help@seata.apache.org
Re: [D] 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败 [incubator-seata]
Posted by "funky-eyes (via GitHub)" <gi...@apache.org>.
GitHub user funky-eyes added a comment to the discussion: 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败
> <img alt="image" width="905" height="360" src="https://private-user-images.githubusercontent.com/27199866/526828910-b4f3a7ca-57e3-4e04-bdfd-ff108c6c0a86.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NjU4NDkwNDQsIm5iZiI6MTc2NTg0ODc0NCwicGF0aCI6Ii8yNzE5OTg2Ni81MjY4Mjg5MTAtYjRmM2E3Y2EtNTdlMy00ZTA0LWJkZmQtZmYxMDhjNmMwYTg2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTEyMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUxMjE2VDAxMzIyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTkwNGYxYmY5MTg2ZTAyMmVkOTM3ZTRjNzhhMGMwNjk1OGY5NDAwYzliNjMyNmZhYThjMDRmYjJkNDMwZTI0ZTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.5E0KadhU7ZwiNsryuVl_rcjnAjFyeFWMW6SIMKfzzhg"> branch_table表是官方脚本创建,实际存储值精度到3位毫秒值
You should file an issue rather than a discussion, and include the version of the Seata server you are running.
GitHub link: https://github.com/apache/incubator-seata/discussions/7866#discussioncomment-15264520
----
This is an automatically sent email for dev@seata.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@seata.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@seata.apache.org
For additional commands, e-mail: dev-help@seata.apache.org
Re: [D] 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败 [incubator-seata]
Posted by "vincent50411 (via GitHub)" <gi...@apache.org>.
GitHub user vincent50411 added a comment to the discussion: 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败
但是用2.2.0版本启动,seata server一直提示包太大解码失败的问题:是什么配置不对吗
2025-12-16 17:48:06.546 ERROR --- [NettyServerNIOWorker_1_4_4] [org.apache.seata.core.rpc.netty.MultiProtocolDecoder] [decode] []: Decode frame error, cause: Adjusted frame length exceeds 8388608: 539978086 - discarded
2025-12-16 17:48:06.547 WARN --- [NettyServerNIOWorker_1_4_4] [io.netty.channel.DefaultChannelPipeline] [onUnhandledInboundException] []: An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
==>
io.netty.handler.codec.DecoderException: org.apache.seata.core.exception.DecodeException: io.netty.handler.codec.TooLongFrameException: Adjusted frame length exceeds 8388608: 539978086 - discarded
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:499) ~[netty-codec-4.1.101.Final.jar:4.1.101.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290) ~[netty-codec-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) [netty-handler-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) [netty-transport-4.1.101.Final.jar:4.1.101.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) [netty-common-4.1.101.Final.jar:4.1.101.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.101.Final.jar:4.1.101.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.101.Final.jar:4.1.101.Final]
at java.lang.Thread.run(Thread.java:750) [na:1.8.0_342]
Caused by: org.apache.seata.core.exception.DecodeException: io.netty.handler.codec.TooLongFrameException: Adjusted frame length exceeds 8388608: 539978086 - discarded
at org.apache.seata.core.rpc.netty.MultiProtocolDecoder.decode(MultiProtocolDecoder.java:132) ~[seata-core-2.2.0.jar:2.2.0]
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.decode(LengthFieldBasedFrameDecoder.java:333) ~[netty-codec-4.1.101.Final.jar:4.1.101.Final]
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529) ~[netty-codec-4.1.101.Final.jar:4.1.101.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468) ~[netty-codec-4.1.101.Final.jar:4.1.101.Final]
... 21 common frames omitted
Caused by: io.netty.handler.codec.TooLongFrameException: Adjusted frame length exceeds 8388608: 539978086 - discarded
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.fail(LengthFieldBasedFrameDecoder.java:507) ~[netty-codec-4.1.101.Final.jar:4.1.101.Final]
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.failIfNecessary(LengthFieldBasedFrameDecoder.java:493) ~[netty-codec-4.1.101.Final.jar:4.1.101.Final]
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.exceededFrameLength(LengthFieldBasedFrameDecoder.java:377) ~[netty-codec-4.1.101.Final.jar:4.1.101.Final]
at io.netty.handler.codec.LengthFieldBasedFrameDecoder.decode(LengthFieldBasedFrameDecoder.java:423) ~[netty-codec-4.1.101.Final.jar:4.1.101.Final]
at org.apache.seata.core.rpc.netty.MultiProtocolDecoder.decode(MultiProtocolDecoder.java:105) ~[seata-core-2.2.0.jar:2.2.0]
... 24 common frames omitted
GitHub link: https://github.com/apache/incubator-seata/discussions/7866#discussioncomment-15267564
----
This is an automatically sent email for dev@seata.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@seata.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@seata.apache.org
For additional commands, e-mail: dev-help@seata.apache.org
Re: [D] 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败 [incubator-seata]
Posted by "maple525866 (via GitHub)" <gi...@apache.org>.
GitHub user maple525866 added a comment to the discussion: 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败
Is the time precision set by `branch_table` accurate enough?
GitHub link: https://github.com/apache/incubator-seata/discussions/7866#discussioncomment-15259460
----
This is an automatically sent email for dev@seata.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@seata.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@seata.apache.org
For additional commands, e-mail: dev-help@seata.apache.org
Re: [D] 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败 [incubator-seata]
Posted by "vincent50411 (via GitHub)" <gi...@apache.org>.
GitHub user vincent50411 added a comment to the discussion: 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败
问题已经找到,生产环境版本用的是seata server 2.0.0版本,DefaultCore中的doGlobalRollback方法内查询branch session队列未做逆序处理:List<BranchSession> branchSessions = globalSession.getSortedBranches(); 导致同一条记录多次修改后的分支回滚顺序是按照branch table表中的gmt create做asc排序的,即最早注册的分支事务最早回滚,出现了和当前最新记录比对时的字段不一致问题。2.2.0版本中已经处理了逆序。感谢
GitHub link: https://github.com/apache/incubator-seata/discussions/7866#discussioncomment-15267530
----
This is an automatically sent email for dev@seata.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@seata.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@seata.apache.org
For additional commands, e-mail: dev-help@seata.apache.org
Re: [D] 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败 [incubator-seata]
Posted by "vincent50411 (via GitHub)" <gi...@apache.org>.
GitHub user vincent50411 added a comment to the discussion: 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败
<img width="905" height="360" alt="image" src="https://github.com/user-attachments/assets/b4f3a7ca-57e3-4e04-bdfd-ff108c6c0a86" />
branch_table表是官方脚本创建,实际存储值精度到3位毫秒值
GitHub link: https://github.com/apache/incubator-seata/discussions/7866#discussioncomment-15264436
----
This is an automatically sent email for dev@seata.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@seata.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@seata.apache.org
For additional commands, e-mail: dev-help@seata.apache.org
Re: [D] 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败 [incubator-seata]
Posted by "vincent50411 (via GitHub)" <gi...@apache.org>.
GitHub user vincent50411 closed a discussion: 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败
**环境说明:**生产环境中业务服务和seata server都是单节点部署,业务表中存在update time时间戳(6),使用postgresql 15数据库。
**业务场景:**业务服务A更新A表一条记录得字段A_1后,调用业务服务B更新B表数据,业务服务B又调用A服务更新A表同一条记录的字段A_2,当业务执行异常后,执行全局回滚,业务服务A中提示全局回滚失败,日志记录显示:
2025-12-10 11:13:57.725 INFO 1 TID:N/A --- [rpcDispatch_RMROLE_1_2_16] o.a.s.c.r.p.c.RmBranchRollbackProcessor : rm handle branch rollback process:BranchRollbackRequest{xid='10.232.68.199:8091:5567173722488930773', branchId=5567173722488930775, branchType=AT, resourceId='jdbc:postgresql://xxxx:54321/haic', applicationData='null'}
2025-12-10 11:13:57.725 INFO 1 TID:N/A --- [rpcDispatch_RMROLE_1_2_16] o.a.seata.rm.AbstractRMHandler : Branch Rollbacking: 10.232.68.199:8091:5567173722488930773 5567173722488930775 jdbc:postgresql://xxxxx:54321/haic
**2025-12-10 11:13:57.729 INFO 1 TID:N/A --- [rpcDispatch_RMROLE_1_2_16] o.a.s.r.d.u.AbstractUndoExecutor : Field not equals, name update_datetime, old value 2025-12-10 11:13:57.671, new value 2025-12-10 11:13:57.7**
2025-12-10 11:13:57.730 ERROR 1 TID:N/A --- [rpcDispatch_RMROLE_1_2_16] o.a.s.r.d.DataSourceManager : branchRollback failed. branchType:[AT], xid:[10.232.68.199:8091:5567173722488930773], branchId:[5567173722488930775], resourceId:[jdbc:postgresql://xxxxx:54321/haic], applicationData:[null]. reason:[Branch session rollback failed because of dirty undo log, please delete the relevant undolog after manually calibrating the data. xid = 10.232.68.199:8091:5567173722488930773 branchId = 5567173722488930775]
2025-12-10 11:13:57.730 INFO 1 TID:N/A --- [rpcDispatch_RMROLE_1_2_16] o.a.seata.rm.AbstractRMHandler : Branch Rollbacked result: PhaseTwo_RollbackFailed_Unretryable
**问题说明**:业务服务A更新同一条记录2次,对应注册2个branch id,业务库中undo log表中存在2条log,branch id不同。日志显示update_datetime, old value 2025-12-10 11:13:57.671, new value 2025-12-10 11:13:57.7不一致,与undo log表对比,可以确认是rm回滚时,先回滚了最早修改的第一条记录,导致update time与当前记录不一致; 但是seata server未启用并行发送消息,branchsession 也做了逆序循环,理论上rm端应该是先收到最后一条branch才对,但是现象是发生了乱序。请问还有什么问题可能导致tc发送给rm的2条branch乱序?
**seata server端的配置:**
store.db.datasource=druid
store.db.dbType=postgresql
store.db.url=jdbc:postgresql://xxxxx:54321/seata
store.db.user=xxxx
store.db.password=xxxxx
store.db.driverClassName=org.postgresql.Driver
store.db.lockTable=lock_table
store.db.globalTable=global_table
store.db.queryLimit=100
store.db.maxConn=400
client.rm.lock.retryInterval=100
store.db.maxWait=5000
store.db.minConn=10
store.mode=db
store.db.branchTable=branch_table
service.vgroupMapping.my_tx_group=default
**seata 客户端配置:**
seata:
enabled: true
enable-auto-data-source-proxy: true
tx-service-group: my_tx_group
registry:
type: nacos
nacos:
application: seata-server
server-addr: ${common.nacos.server-addr}
namespace: ${common.nacos.discovery-namespace}
group: ${common.nacos.discovery-group}
cluster: default
username: ${common.nacos.discovery-username}
password: ${common.nacos.discovery-password}
config:
type: nacos
nacos:
server-addr: ${common.nacos.server-addr}
namespace: ${common.nacos.config-namespace}
group: ${common.nacos.discovery-group}
cluster: default
username: ${common.nacos.discovery-username}
password: ${common.nacos.discovery-password}
dataId: haic-seata.properties
GitHub link: https://github.com/apache/incubator-seata/discussions/7866
----
This is an automatically sent email for dev@seata.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@seata.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@seata.apache.org
For additional commands, e-mail: dev-help@seata.apache.org
Re: [D] 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败 [incubator-seata]
Posted by "funky-eyes (via GitHub)" <gi...@apache.org>.
GitHub user funky-eyes added a comment to the discussion: 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败
Please provide the logs showing the rollback sequence on the server side. There should be no rollback sequence issues in version 2.2.0.
GitHub link: https://github.com/apache/incubator-seata/discussions/7866#discussioncomment-15267102
----
This is an automatically sent email for dev@seata.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@seata.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@seata.apache.org
For additional commands, e-mail: dev-help@seata.apache.org
Re: [D] 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败 [incubator-seata]
Posted by "vincent50411 (via GitHub)" <gi...@apache.org>.
GitHub user vincent50411 added a comment to the discussion: 同一条记录多次修改分支回滚时执行顺序异常导致update time不一致出现脏写回滚失败
seata server是2.2.0,客户端sdk 2.2.0,因为不太确认是不是问题,所以提了一个公开讨论话题
GitHub link: https://github.com/apache/incubator-seata/discussions/7866#discussioncomment-15265882
----
This is an automatically sent email for dev@seata.apache.org.
To unsubscribe, please send an email to: dev-unsubscribe@seata.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@seata.apache.org
For additional commands, e-mail: dev-help@seata.apache.org