wxrqforever opened a new issue, #7090:
URL: https://github.com/apache/incubator-seata/issues/7090

   一、背景
   有两个seata-server实例,客户端业务应用实例一个,故意在tcc模式中commit方法中抛出了一个异常
   ```
   public void commit(BusinessActionContext actionContext) {
       int I = 1/0;         
   }
   ```
   
此时db中global_table全局事务的status字段为3,server会进行事务提交的重试,这个时候我发现客户端应用收到了两个seata-server分别发来的重试请求。
   server端日志如下
   实例a:
   12:00:32.264  INFO --- [      RetryCommitting_1_1] 
[.core.rpc.netty.ChannelManager] [          getChannel]  
[xxxxxx:2387511350085918818] : Choose [id: 0x6613e85e, L:/xxxxxx:9527 - 
R:/xxxxxx:54702] on the same IP[xxxxxx] as alternative of xxxxxx: xxxxxx:46452
   12:00:32.442  INFO --- [     batchLoggerPrint_1_1] 
[ocessor.server.BatchLogHandler] [                 run]  [] : receive 
msg[single]: BranchCommitResponse{xid='xxxxxx:2387511350085918818', 
branchId=2387511350085918823, branchStatus=PhaseTwo_CommitFailed_Retryable, 
resultCode=Success, msg='null'}, clientIp: xxxxxx, vgroup: xxxxxx
   12:00:32.442 ERROR --- [      RetryCommitting_1_1] 
[server.coordinator.DefaultCore] [bda$doGlobalCommit$1]  
[11.166.244.1:9527:2387511350085918818] : Committing global 
transaction[11.166.244.1:9527:2387511350085918818] failed, caused by branch 
transaction[2387511350085918823] commit failed, will retry later.
   实例b:
   12:00:24.130  INFO --- [     batchLoggerPrint_1_1] 
[ocessor.server.BatchLogHandler] [                 run]  [] : receive 
msg[single]: BranchCommitResponse{xid='xxxxxx:2387511350085918818', 
branchId=2387511350085918823, branchStatus=PhaseTwo_CommitFailed_Retryable, 
resultCode=Success, msg='null'}, clientIp: 11.151.193.164, vgroup: netbuild
   12:00:24.130 ERROR --- [      RetryCommitting_1_1] 
[server.coordinator.DefaultCore] [bda$doGlobalCommit$1]  
[xxxxxx:9527:2387511350085918818] : Committing global 
transaction[xxxxxx:2387511350085918818] failed, caused by branch 
transaction[2387511350085918823] commit failed, will retry later.
   
   server端配置如下:
   #Transaction rule configuration, only for the server
   server.recovery.committingRetryPeriod=60000
   server.recovery.asynCommittingRetryPeriod=1000
   server.recovery.rollbackingRetryPeriod=60000
   server.recovery.timeoutRetryPeriod=1000
   server.maxCommitRetryTimeout=-1
   server.maxRollbackRetryTimeout=-1
   server.rollbackRetryTimeoutUnlockEnable=false
   server.distributedLockExpireTime=10000
   server.session.branchAsyncQueueSize=5000
   server.session.enableBranchAsyncRemove=false
   server.enableParallelRequestHandle=true
   server.enableParallelHandleBranch=false
   server.applicationDataLimit=64000
   server.applicationDataLimitCheck=false
   
   二、问题
   
我的疑问在于在多个seata-server的场景下,tc发起重试,不是应该仅有一个tc实际生效发起重试,这里是多个server均发起了重试请求是符合预期的吗?分布式锁控制tc的重试在这个场景是不生效的吗?
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@seata.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


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

Reply via email to