apache / apache/incubator-seata
The batch update/insert bug by using seata AT mode in 1.x versions.
- Dominant language
- Java
- Stars
- 26k
- Forks
- 8.8k
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 4
Description
- [x] I have searched the [issues](https://github.com/seata/seata/issues) of this repository and believe that this is not a duplicate.
### Ⅰ. Issue Description
By using seata at mode,the batch insert/update method caught some exceptions.The num of inserting rows is 3000.I don't know how to fix the problem.I try the 1.x version above of all, it doesn't work.
### Ⅱ. Describe what happened
If there is an exception, please attach the exception trace:
service log
```
2020-08-17 09:54:27.629 INFO [genoany-crud-service,,,] 10420 --- [atch_RMROLE_1_8] i.s.core.rpc.netty.RmMessageListener : onMessage:xid=192.168.1.79:8091:2051355649,branchId=2051355654,branchType=AT,resourceId=jdbc:mysql://192.168.1.18:30000/genoany_quality,applicationData=null
2020-08-17 09:54:27.629 INFO [genoany-crud-service,,,] 10420 --- [atch_RMROLE_1_8] io.seata.rm.AbstractRMHandler : Branch Rollbacking: 192.168.1.79:8091:2051355649 2051355654 jdbc:mysql://192.168.1.18:30000/genoany_quality
2020-08-17 09:54:27.653 ERROR [genoany-crud-service,,,] 10420 --- [q-sinker-pool-8] i.s.r.d.exec.AbstractDMLBaseExecutor : execute executeAutoCommitTrue error:io.seata.core.exception.RmTransactionException: Response[ TransactionException[Could not register branch into global session xid = 192.168.1.79:8091:2051355649 status = Rollbacking while ]
java.sql.SQLException: io.seata.core.exception.RmTransactionException: Response[ TransactionException[Could not register branch into global session xid = 192.168.1.79:8091:2051355649 status = Rollbacking while ]
at io.seata.rm.datasource.ConnectionProxy.recognizeLockKeyConflictException(ConnectionProxy.java:151) ~[seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.ConnectionProxy.processGlobalTransactionCommit(ConnectionProxy.java:213) ~[seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.ConnectionProxy.doCommit(ConnectionProxy.java:190) ~[seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.ConnectionProxy.lambda$commit$0(ConnectionProxy.java:178) ~[seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.ConnectionProxy$LockRetryPolicy.execute(ConnectionProxy.java:283) ~[seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.ConnectionProxy.commit(ConnectionProxy.java:177) ~[seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor.lambda$executeAutoCommitTrue$0(AbstractDMLBaseExecutor.java:92) [seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.ConnectionProxy$LockRetryPolicy.doRetryOnLockConflict(ConnectionProxy.java:293) ~[seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor$LockRetryPolicy.execute(AbstractDMLBaseExecutor.java:135) ~[seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor.executeAutoCommitTrue(AbstractDMLBaseExecutor.java:90) [seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor.doExecute(AbstractDMLBaseExecutor.java:58) [seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.exec.BaseTransactionalExecutor.execute(BaseTransactionalExecutor.java:95) [seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:101) [seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:47) [seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.StatementProxy.executeBatch(StatementProxy.java:164) [seata-all-1.0.0.jar:1.0.0]
at org.springframework.jdbc.core.JdbcTemplate.lambda$batchUpdate$2(JdbcTemplate.java:950) [spring-jdbc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:617) [spring-jdbc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:646) [spring-jdbc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:936) [spring-jdbc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.jdbc.core.BatchUpdateUtils.executeBatchUpdate(BatchUpdateUtils.java:37) ~[spring-jdbc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:986) [spring-jdbc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:981) [spring-jdbc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at com.newpwr.crud.service.service.impl.CrudServiceImpl.batchInsert(CrudServiceImpl.java:215) ~[classes/:na]
at com.newpwr.crud.service.service.impl.CrudServiceImpl$$FastClassBySpringCGLIB$$44e2f795.invoke() ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746) ~[spring-aop-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294) ~[spring-tx-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) ~[spring-tx-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) ~[spring-aop-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at com.newpwr.crud.service.service.impl.CrudServiceImpl$$EnhancerBySpringCGLIB$$93295398.batchInsert() ~[classes/:na]
at com.newpwr.crud.service.controller.CrudController.batchInsert(CrudController.java:155) ~[classes/:na]
at com.newpwr.crud.service.controller.CrudController$$FastClassBySpringCGLIB$$3a759979.invoke() ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746) ~[spring-aop-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:56) ~[spring-aop-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) ~[spring-aop-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:56) ~[spring-aop-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93) ~[spring-aop-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) ~[spring-aop-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at com.newpwr.crud.service.controller.CrudController$$EnhancerBySpringCGLIB$$63df80cb.batchInsert() ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_201]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_201]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_201]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_201]
at com.newpwr.amqp.stream.SinkRecevier.excuteMethod(SinkRecevier.java:150) ~[genoany-amqp-core-1.0.0-SNAPSHOT.jar:na]
at com.newpwr.amqp.stream.SinkRecevier.resolve(SinkRecevier.java:69) ~[genoany-amqp-core-1.0.0-SNAPSHOT.jar:na]
at com.newpwr.amqp.stream.SinkRecevier.lambda$receive$0(SinkRecevier.java:58) ~[genoany-amqp-core-1.0.0-SNAPSHOT.jar:na]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_201]
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) ~[na:1.8.0_201]
at java.util.concurrent.FutureTask.run(FutureTask.java) ~[na:1.8.0_201]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_201]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_201]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_201]
Caused by: io.seata.core.exception.RmTransactionException: Response[ TransactionException[Could not register branch into global session xid = 192.168.1.79:8091:2051355649 status = Rollbacking while ]
at io.seata.rm.AbstractResourceManager.branchRegister(AbstractResourceManager.java:69) ~[seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.DefaultResourceManager.branchRegister(DefaultResourceManager.java:96) ~[seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.ConnectionProxy.register(ConnectionProxy.java:233) ~[seata-all-1.0.0.jar:1.0.0]
at io.seata.rm.datasource.ConnectionProxy.processGlobalTransactionCommit(ConnectionProxy.java:211) ~[seata-all-1.0.0.jar:1.0.0]
... 56 common frames omitted
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.newpwr.amqp.stream.SinkRecevier.excuteMethod(SinkRecevier.java:150)
at com.newpwr.amqp.stream.SinkRecevier.resolve(SinkRecevier.java:69)
at com.newpwr.amqp.stream.SinkRecevier.lambda$receive$0(SinkRecevier.java:58)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
at java.util.concurrent.FutureTask.run(FutureTask.java)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [insert into iqc_sample_inspection_detail (id,sample_inspection_id,sample_no,iqc_item_id,iqc_item_name,value_unit,value_min,value_normal,value_max,value_type,tolerance,iqc_item_value,value_dsc,item_result,inspection_user_id,inspection_user_name,inspection_date,modifier_id,modifier,modify_time,creator_id,creator,create_time,is_deleted )values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? )]; SQL state [null]; error code [0]; io.seata.core.exception.RmTransactionException: Response[ TransactionException[Could not register branch into global session xid = 192.168.1.79:8091:2051355649 status = Rollbacking while ]; nested exception is java.sql.SQLException: io.seata.core.exception.RmTransactionException: Response[ TransactionException[Could not register branch into global session xid = 192.168.1.79:8091:2051355649 status = Rollbacking while ]
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1414)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:632)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:646)
at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:936)
at org.springframework.jdbc.core.BatchUpdateUtils.executeBatchUpdate(BatchUpdateUtils.java:37)
at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:986)
at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:981)
at com.newpwr.crud.service.service.impl.CrudServiceImpl.batchInsert(CrudServiceImpl.java:215)
at com.newpwr.crud.service.service.impl.CrudServiceImpl$$FastClassBySpringCGLIB$$44e2f795.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
at com.newpwr.crud.service.service.impl.CrudServiceImpl$$EnhancerBySpringCGLIB$$93295398.batchInsert()
at com.newpwr.crud.service.controller.CrudController.batchInsert(CrudController.java:155)
at com.newpwr.crud.service.controller.CrudController$$FastClassBySpringCGLIB$$3a759979.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:56)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:56)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
at com.newpwr.crud.service.controller.CrudController$$EnhancerBySpringCGLIB$$63df80cb.batchInsert()
... 13 more
Caused by: java.sql.SQLException: io.seata.core.exception.RmTransactionException: Response[ TransactionException[Could not register branch into global session xid = 192.168.1.79:8091:2051355649 status = Rollbacking while ]
at io.seata.rm.datasource.ConnectionProxy.recognizeLockKeyConflictException(ConnectionProxy.java:151)
at io.seata.rm.datasource.ConnectionProxy.processGlobalTransactionCommit(ConnectionProxy.java:213)
at io.seata.rm.datasource.ConnectionProxy.doCommit(ConnectionProxy.java:190)
at io.seata.rm.datasource.ConnectionProxy.lambda$commit$0(ConnectionProxy.java:178)
at io.seata.rm.datasource.ConnectionProxy$LockRetryPolicy.execute(ConnectionProxy.java:283)
at io.seata.rm.datasource.ConnectionProxy.commit(ConnectionProxy.java:177)
at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor.lambda$executeAutoCommitTrue$0(AbstractDMLBaseExecutor.java:92)
at io.seata.rm.datasource.ConnectionProxy$LockRetryPolicy.doRetryOnLockConflict(ConnectionProxy.java:293)
at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor$LockRetryPolicy.execute(AbstractDMLBaseExecutor.java:135)
at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor.executeAutoCommitTrue(AbstractDMLBaseExecutor.java:90)
at io.seata.rm.datasource.exec.AbstractDMLBaseExecutor.doExecute(AbstractDMLBaseExecutor.java:58)
at io.seata.rm.datasource.exec.BaseTransactionalExecutor.execute(BaseTransactionalExecutor.java:95)
at io.seata.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:101)
at io.seata.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:47)
at io.seata.rm.datasource.StatementProxy.executeBatch(StatementProxy.java:164)
at org.springframework.jdbc.core.JdbcTemplate.lambda$batchUpdate$2(JdbcTemplate.java:950)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:617)
... 41 more
Caused by: io.seata.core.exception.RmTransactionException: Response[ TransactionException[Could not register branch into global session xid = 192.168.1.79:8091:2051355649 status = Rollbacking while ]
at io.seata.rm.AbstractResourceManager.branchRegister(AbstractResourceManager.java:69)
at io.seata.rm.DefaultResourceManager.branchRegister(DefaultResourceManager.java:96)
at io.seata.rm.datasource.ConnectionProxy.register(ConnectionProxy.java:233)
at io.seata.rm.datasource.ConnectionProxy.processGlobalTransactionCommit(ConnectionProxy.java:211)
... 56 more
2020-08-17 09:54:28.335 INFO [genoany-crud-service,,,] 10420 --- [atch_RMROLE_1_8] i.s.r.d.undo.AbstractUndoLogManager : xid 192.168.1.79:8091:2051355649 branch 2051355654, undo_log deleted with GlobalFinished
2020-08-17 09:54:28.338 INFO [genoany-crud-service,,,] 10420 --- [atch_RMROLE_1_8] io.seata.rm.AbstractRMHandler : Branch Rollbacked result: PhaseTwo_Rollbacked
```
seata server log
```
2020-08-17 09:32:51.419 INFO [ServerHandlerThread_1_500]io.seata.server.coordinator.DefaultCore.begin:154 -Successfully begin global transaction xid = 192.168.1.79:8091:2051355455
2020-08-17 09:32:59.064 INFO [ServerHandlerThread_1_500]io.seata.core.rpc.DefaultServerMessageListenerImpl.onRegRmMessage:123 -rm register success,message:RegisterRMRequest{resourceIds='jdbc:mysql://192.168.1.18:30000/genoany_quality', applicationId='genoany-crud-service', transactionServiceGroup='genoany-crud-service-fescar-service-group'},channel:[id: 0x2a01519b, L:/127.0.0.1:8091 - R:/127.0.0.1:58454]
2020-08-17 09:33:00.364 INFO [batchLoggerPrint_1]io.seata.core.rpc.DefaultServerMessageListenerImpl.run:205 -SeataMergeMessage xid=192.168.1.79:8091:2051355455,branchType=AT,resourceId=jdbc:mysql://192.168.1.18:30000/genoany_quality,lockKey=iqc_sample_inspection_detail:106584111908319,106584111908320,106584111908321,106584111908322,106584111908323,106584111908324,106584111908325,106584111908326,106584111908327,106584111908328,106584111908329,106584111908330,106584111908331,106584111908332,106584111908333,106584111908334,106584111908335,106584111908336,106584111908337,106584111908338,106584111908339,106584111908340,106584111908341,106584111908342,106584111908343,106584111908344,106584111908345,106584111908346,106584111908347,106584111908348,106584111908349,106584111908350,106584111908351,106584111908352,106584111908353,106584111908354,106584111908355,106584111908356,106584111908357,106584111908358,106584111908359,106584111908360,106584111908361,106584111908362,106584111908363,106584111908364,106584111908365,106584111908366,106584111908367,106584111908368,106584111908369,106584111908370,106584111908371,106584111908372,106584111908373,106584111908374,106584111908375,106584111908376,106584111908377,106584111908378,106584111908379,106584111908380,106584111908381,106584111908382,106584111908383,106584111908384,106584111908385,106584111908386,106584111908387,106584111908388,106584111908389,106584111908390,106584111908391,106584111908392,106584111908393,106584111908394,106584111908395,106584111908396,106584111908397,106584111908398,106584111908399,106584111908400,106584111908401,106584111908402,106584111908403,106584111908404,106584111908405,106584111908406,106584111908407,106584111908408,106584111908409,106584111908410,106584111908411,106584111908412,106584111908413,106584111908414,106584111908415,106584111908416,106584111908417,106584111908418,106584111908419,106584111908420,106584111908421,106584111908422,106584111908423,106584111908424,106584111908425,106584111908426,106584111908427,106584111908428,106584111908429,106584111908430,106584111908431,106584111908432,106584111908433,106584111908434,106584111908435,106584111908436,106584111908437,106584111908438,106584111908439,106584111908440,106584111908441,106584111908442,106584111908443,106584111908444,106584111908445,106584111908446,106584111908447,106584111908448,106584111908449,106584111908450,106584111908451,106584111908452,106584111908453,106584111908454,106584111908455,106584111908456,106584111908457,106584111908458,106584111908459,106584111908460,106584111908461,106584111908462,106584111908463,106584111908464,106584111908465,106584111908466,106584111908467,106584111908468,106584111908469,106584111908470,106584111908471,106584111908472,106584111908473,106584111908474,106584111908475,106584111908476,106584111908477,106584111908478,106584111908479,106584111908480,106584111908481,106584111908482,106584111908483,106584111908484,106584111908485,106584111908486,106584111908487,106584111908488,106584111908489,106584111908490,106584111908491,106584111908492,106584111908493,106584111908494,106584111908495,106584111908496,106584111908497,106584111908498,106584111908499,106584111908500,106584111908501,106584111908502,106584111908503,106584111908504,106584111908505,106584111908506,106584111908507,106584111908508,106584111908509,106584111908510,106584111908511,106584111908512,106584111908513,106584111908514,106584111908515,106584111908516,106584111908517,106584111908518,106584111908519,106584111908520,106584111908521,106584111908522,106584111908523,106584111908524,106584111908525,106584111908526,106584111908527,106584111908528,106584111908529,106584111908530,106584111908531,106584111908532,106584111908533,106584111908534,106584111908535,106584111908536,106584111908537,106584111908538,106584111908539,106584111908540,106584111908541,106584111908542,106584111908543,106584111908544,106584111908545,106584111908546,106584111908547,106584111908548,106584111908549,106584111908550,106584111908551,106584111908552,106584111908553,106584111908554,106584111908555,106584111908556,106584111908557,106584111908558,106584111908559,106584111908560,106584111908561,106584111908562,106584111908563,106584111908564,106584111908565,106584111908566,106584111908567,106584111908568,106584111908569,106584111908570,106584111908571,106584111908572,106584111908573,106584111908574,106584111908575,106584111908576,106584111908577,106584111908578,106584111908579,106584111908580,106584111908581,106584111908582,106584111908583,106584111908584,106584111908585,106584111908586,106584111908587,106584111908588,106584111908589,106584111908590,106584111908591,106584111908592,106584111908593,106584111908594,106584111908595,106584111908596,106584111908597,106584111908598,106584111908599,106584111908600,106584111908601,106584111908602,106584111908603,106584111908604,106584111908605,106584111908606,106584111908607,106584111908608,106584111908609,106584111908610,106584111908611,106584111908612,106584111908613,106584111908614,106584111908615,106584111908616,106584111908617,106584111908618,106584111908619,106584111908620,106584111908621,106584111908622,106584111908623,106584111908624,106584111908625,106584111908626,106584111908627,106584111908628,106584111908629,106584111908630,106584111908631,106584111908632,106584111908633,106584111908634,106584111908635,106584111908636,106584111908637,106584111908638,106584111908639,106584111908640,106584111908641,106584111908642,106584111908643,106584111908644,106584111908645,106584111908646,106584111908647,106584111908648,106584111908649,106584111908650,106584111908651,106584111908652,106584111908653,106584111908654,106584111908655,106584111908656,106584111908657,106584111908658,106584111908659,106584111908660,106584111908661,106584111908662,106584111908663,106584111908664,106584111908665,106584111908666,106584111908667,106584111908668,106584111908669,106584111908670,106584111908671,106584111908672,106584111908673,106584111908674,106584111908675,106584111908676,106584111908677,106584111908678,106584111908679,106584111908680,106584111908681,106584111908682,106584111908683,106584111908684,106584111908685,106584111908686,106584111908687,106584111908688,106584111908689,106584111908690,106584111908691,106584111908692,106584111908693,106584111908694,106584111908695,106584111908696,106584111908697,106584111908698,106584111908699,106584111908700,106584111908701,106584111908702,106584111908703,106584111908704,106584111908705,106584111908706,106584111908707,106584111908708,106584111908709,106584111908710,106584111908711,106584111908712,106584111908713,106584111908714,106584111908715,106584111908716,106584111908717,106584111908718,106584111908719,106584111908720,106584111908721,106584111908722,106584111908723,106584111908724,106584111908725,106584111908726,106584111908727,106584111908728,106584111908729,106584111908730,106584111908731,106584111908732,106584111908733,106584111908734,106584111908735,106584111908736,106584111908737,106584111908738,106584111908739,106584111908740,106584111908741,106584111908742,106584111908743,106584111908744,106584111908745,106584111908746,106584111908747,106584111908748,106584111908749,106584111908750,106584111908751,106584111908752,106584111908753,106584111908754,106584111908755,106584111908756,106584111908757,106584111908758,106584111908759,106584111908760,106584111908761,106584111908762,106584111908763,106584111908764,106584111908765,106584111908766,106584111908767,106584111908768,106584111908769,106584111908770,106584111908771,106584111908772,106584111908773,106584111908774,106584111908775,106584111908776,106584111908777,106584111908778,106584111908779,106584111908780,106584111908781,106584111908782,106584111908783,106584111908784,106584111908785,106584111908786,106584111908787,106584111908788,106584111908789,106584111908790,106584111908791,106584111908792,106584111908793,106584111908794,106584111908795,106584111908796,106584111908797,106584111908798,106584111908799,106584111908800,106584111908801,106584111908802,106584111908803,106584111908804,106584111908805,106584111908806,106584111908807,106584111908808,106584111908809,106584111908810,106584111908811,106584111908812,106584111908813,106584111908814,106584111908815
,clientIp:127.0.0.1,vgroup:genoany-crud-service-fescar-service-group
2020-08-17 09:33:00.369 WARN [configOperate_2_2]io.seata.config.FileConfiguration.run:266 -Could not found property store.file.max-branch-session-size, try to use default value instead.
2020-08-17 09:33:00.383 INFO [ServerHandlerThread_1_500]io.seata.common.loader.EnhancedServiceLoader.loadFile:236 -load LockStore[DB] extension by class[io.seata.core.store.db.LockStoreDataBaseDAO]
2020-08-17 09:33:00.383 INFO [ServerHandlerThread_1_500]io.seata.common.loader.EnhancedServiceLoader.loadFile:236 -load Locker[db] extension by class[io.seata.server.lock.db.DataBaseLocker]
2020-08-17 09:33:01.112 INFO [ServerHandlerThread_1_500]io.seata.server.coordinator.DefaultCore.lambda$branchRegister$0:98 -Successfully register branch xid = 192.168.1.79:8091:2051355455, branchId = 2051355466
2020-08-17 09:33:01.442 INFO [batchLoggerPrint_1]io.seata.core.rpc.DefaultServerMessageListenerImpl.run:205 -SeataMergeMessage xid=192.168.1.79:8091:2051355455,branchId=2051355466,resourceId=null,status=PhaseOne_Done,applicationData=null
,clientIp:127.0.0.1,vgroup:genoany-crud-service-fescar-service-group
2020-08-17 09:33:01.457 INFO [batchLoggerPrint_1]io.seata.core.rpc.DefaultServerMessageListenerImpl.run:205 -SeataMergeMessage xid=192.168.1.79:8091:2051355455,extraData=null
,clientIp:127.0.0.1,vgroup:genoany-workflow-scheduler-service-fescar-service-group
2020-08-17 09:33:01.529 INFO [ServerHandlerThread_1_500]io.seata.server.coordinator.DefaultCore.branchReport:126 -Successfully branch report xid = 192.168.1.79:8091:2051355455, branchId = 2051355466
2020-08-17 09:33:02.439 INFO [ServerHandlerThread_1_500]io.seata.server.coordinator.DefaultCore.doGlobalRollback:418 -Successfully rollback branch xid=192.168.1.79:8091:2051355455 branchId=2051355466
2020-08-17 09:33:02.590 ERROR[ServerHandlerThread_1_500]io.seata.core.exception.AbstractExceptionHandler.exceptionHandleTemplate:120 -Catch TransactionException while do RPC, request: xid=192.168.1.79:8091:2051355455,extraData=null
io.seata.core.exception.TransactionException: global rollback request failed. xid=192.168.1.79:8091:2051355455, msg=removeGlobalSession failed.
at io.seata.server.AbstractTCInboundHandler$3.execute(AbstractTCInboundHandler.java:121)
at io.seata.server.AbstractTCInboundHandler$3.execute(AbstractTCInboundHandler.java:113)
at io.seata.core.exception.AbstractExceptionHandler.exceptionHandleTemplate(AbstractExceptionHandler.java:117)
at io.seata.server.AbstractTCInboundHandler.handle(AbstractTCInboundHandler.java:113)
at io.seata.core.protocol.transaction.GlobalRollbackRequest.handle(GlobalRollbackRequest.java:34)
at io.seata.server.coordinator.DefaultCoordinator.onRequest(DefaultCoordinator.java:544)
at io.seata.core.rpc.DefaultServerMessageListenerImpl.onTrxMessage(DefaultServerMessageListenerImpl.java:91)
at io.seata.core.rpc.netty.RpcServer.dispatch(RpcServer.java:295)
at io.seata.core.rpc.netty.AbstractRpcRemoting$3.run(AbstractRpcRemoting.java:384)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)
Caused by: io.seata.common.exception.StoreException: removeGlobalSession failed.
at io.seata.server.session.db.DataBaseSessionManager.removeGlobalSession(DataBaseSessionManager.java:119)
at io.seata.server.session.AbstractSessionManager.onEnd(AbstractSessionManager.java:148)
at io.seata.server.session.GlobalSession.end(GlobalSession.java:181)
at io.seata.server.session.SessionHelper.endRollbacked(SessionHelper.java:97)
at io.seata.server.coordinator.DefaultCore.doGlobalRollback(DefaultCore.java:458)
at io.seata.server.coordinator.DefaultCore.rollback(DefaultCore.java:363)
at io.seata.server.coordinator.DefaultCoordinator.doGlobalRollback(DefaultCoordinator.java:182)
at io.seata.server.AbstractTCInboundHandler$3.execute(AbstractTCInboundHandler.java:118)
... 12 common frames omitted
```
### Ⅲ. Describe what you expected to happen
I wannna batch insert function in seata env well.
### Ⅳ. How to reproduce it (as minimally and precisely as possible)
1. Use jdbcTemplate, get connection
2. execute batch
### Ⅴ. Anything else we need to know?
The execute batch code is following here:
```java
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUsername(userName);
druidDataSource.setPassword(passWord);
druidDataSource.setUrl(url);
druidDataSource.setDriverClassName(driverClassName);
JdbcTemplate template=new JdbcTemplate(new DataSourceProxy(druidDataSource));
connection =template.getConn();
connection.setAutoCommit(false);
ps = connection.prepareStatement(sql);
for (Object[] parameters : parametersList) {
for (int j = 0; j < parameters.length; j++) {
ps.setObject(j + 1, parameters[j]);
}
ps.addBatch();
}
ps.executeBatch();
connection.commit();
//The jdbcTemplate is packaging by me, this is the getConn method
public Connection getConn() {
return DataSourceUtils.getConnection(this.obtainDataSource());
}
```
### Ⅵ. Environment:
- JDK version :1.8
- OS :Windows 10
- Others:Seata version :1.2,1.3,1.0
Contributor guide
Research direction
Start with the reported stack trace at io.seata.rm.datasource.ConnectionProxy.java, particularly processGlobalTransactionCommit, and follow the batch path through AbstractDMLBaseExecutor.java and StatementProxy.executeBatch. Reproduce the 3,000-row batch insert or update in Seata AT mode and determine why branch registration occurs while the global transaction is Rollbacking; done requires a confirmed cause and regression coverage.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, mysql, spring
- Domain
- backend, databases, distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100