apache / incubator-seata

:fire: Seata is an easy-to-use, high-performance, open source distributed transaction solution.

Home Page:https://seata.apache.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

seata-server 1.5.1 客户端1.8.0 出现主键冲突

junliudr opened this issue · comments

09:15:32.802 INFO --- [ batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler : timeout=60000,transact

ionName=member_service,clientIp:10.230.150.3,vgroup:member_service

09:15:32.808 INFO --- [rverHandlerThread_1_1_500] i.s.s.coordinator.DefaultCoordinator : Begin new global trans

action applicationId: member_service,transactionServiceGroup: member_service, transactionName: member_service,timeou

t:60000,xid:10.230.150.10:8091:27521540554056293

09:15:32.866 INFO --- [ batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler : SeataMergeMessage xid=

10.230.150.10:8091:27521540554056293,branchType=AT,resourceId=jdbc:mysql://drdsbggaq2b6y9n5.drds.aliyuncs.com/member

_pressure,lockKey=liujun_test:45

,clientIp:10.230.150.3,vgroup:member_service

09:15:32.897 INFO --- [rverHandlerThread_1_2_500] i.seata.server.coordinator.AbstractCore : Register branch succes

sfully, xid = 10.230.150.10:8091:27521540554056293, branchId = 27521540554056295, resourceId = jdbc:mysql://drdsbgga

q2b6y9n5.drds.aliyuncs.com/member_pressure ,lockKeys = liujun_test:45

09:15:32.912 INFO --- [ batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler : SeataMergeMessage xid=

10.230.150.10:8091:27521540554056293,branchType=AT,resourceId=jdbc:mysql://drdsbggaq2b6y9n5.drds.aliyuncs.com/member

_pressure,lockKey=liujun_test:45;undo_log:109

,clientIp:10.230.150.3,vgroup:member_service

09:15:32.937 ERROR --- [rverHandlerThread_1_3_500] i.s.s.s.db.lock.LockStoreDataBaseDAO : Global lock batch acqu

ire error: [17aaca14b8786000-3][172.16.89.97:3306][busi_pressure]ERR-CODE: [TDDL-4614][ERR_EXECUTE_ON_MYSQL] Error o

ccurs when execute on GROUP 'BUSI_PRESSURE_1582078948621MWMH_G6ST_0000' ATOM 'rm-2zecurqpat17pzd28_busi_pressure_drx

u_0000': Duplicate entry 'jdbc:mysql://drdsbggaq2b6y9n5.drds.aliyuncs.com/member_pressure^' for key 'PRIMARY'

==>

java.sql.BatchUpdateException: [17aaca14b8786000-3][172.16.89.97:3306][busi_pressure]ERR-CODE: [TDDL-4614][ERR_EXECU

TE_ON_MYSQL] Error occurs when execute on GROUP 'BUSI_PRESSURE_1582078948621MWMH_G6ST_0000' ATOM 'rm-2zecurqpat17pzd

28_busi_pressure_drxu_0000': Duplicate entry 'jdbc:mysql://drdsbggaq2b6y9n5.drds.aliyuncs.com/member_pressure^' for

key 'PRIMARY'

at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1819)

at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1281)

at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeBatch(DruidPooledPreparedStatement.java:565)

at io.seata.server.storage.db.lock.LockStoreDataBaseDAO.doAcquireLocks(LockStoreDataBaseDAO.java:368)

at io.seata.server.storage.db.lock.LockStoreDataBaseDAO.acquireLock(LockStoreDataBaseDAO.java:186)

at io.seata.server.storage.db.lock.DataBaseLocker.acquireLock(DataBaseLocker.java:64)

at io.seata.server.lock.AbstractLockManager.acquireLock(AbstractLockManager.java:65)

at io.seata.server.session.BranchSession.loc k(BranchSession.java:287)

at io.seata.server.transaction.at.ATCore.branchSessionLock(ATCore.java:80)

at io.seata.server.coordinator.AbstractCore.lambda$branchRegister$0(AbstractCore.java:83)

at io.seata.server.storage.db.session.DataBaseSessionManager.lockAndExecute(DataBaseSessionManager.java:191)

at io.seata.server.session.SessionHolder.lockAndExecute(SessionHolder.java:365)

at io.seata.server.coordinator.AbstractCore.branchRegister(AbstractCore.java:77)

at io.seata.server.coordinator.DefaultCore.branchRegister(DefaultCore.java:102)

at io.seata.server.coordinator.DefaultCoordinator.doBranchRegister(DefaultCoordinator.java:277)

at io.seata.server.AbstractTCInboundHandler$4.execute(AbstractTCInboundHandler.java:184)

at io.seata.server.AbstractTCInboundHandler$4.execute(AbstractTCInboundHandler.java:179)

at io.seata.core.exception.AbstractExceptionHandler.exceptionHandleTemplate(AbstractExceptionHandler.java:131)

at io.seata.server.AbstractTCInboundHandler.handle(AbstractTCInboundHandler.java:179)

at io.seata.core.protocol.transaction.BranchRegisterRequest.handle(BranchRegisterRequest.java:136)

at io.seata.server.coordinator.DefaultCoordinator.onRequest(DefaultCoordinator.java:511)

at io.seata.core.rpc.processor.server.ServerOnRequestProcessor.onRequestMessage(ServerOnRequestProcessor.java:175

)

at io.seata.core.rpc.processor.server.ServerOnRequestProcessor.process(ServerOnRequestProcessor.java:117)

at io.seata.core.rpc.netty.AbstractNettyRemoting.lambda$processMessage$2(AbstractNettyRemoting.java:281)

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: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: [17aaca14b8786000-3][172.16.8

9.97:3306][busi_pressure]ERR-CODE: [TDDL-4614][ERR_EXECUTE_ON_MYSQL] Error occurs when execute on GROUP 'BUSI_PRESSU

RE_1582078948621MWMH_G6ST_0000' ATOM 'rm-2zecurqpat17pzd28_busi_pressure_drxu_0000': Duplicate entry 'jdbc:mysql://d

rdsbggaq2b6y9n5.drds.aliyuncs.com/member_pressure^' for key 'PRIMARY'

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

at com.mysql.jdbc.Util.handleNewInstance(Util.java:389)

at com.mysql.jdbc.Util.getInstance(Util.java:372)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:973)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3835)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3771)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2535)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1911)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2145)

at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1777)

... 27 common frames omitted

<==

09:15:32.938 INFO --- [rverHandlerThread_1_3_500] i.s.s.s.db.lock.LockStoreDataBaseDAO : Global lock batch acqu

ire failed, xid 10.230.150.10:8091:27521540554056293 branchId 27521540554056297 pks [45, 109]

09:15:32.946 INFO --- [rverHandlerThread_1_3_500] i.s.c.e.AbstractExceptionHandler : this request cannot ac

quire global lock, you can let Seata retry by setting config [client.rm.lock.retryPolicyBranchRollbackOnConflict] =

false or manually retry by yourself. request: xid=10.230.150.10:8091:27521540554056293,branchType=AT,resourceId=jdbc

:mysql://drdsbggaq2b6y9n5.drds.aliyuncs.com/member_pressure,lockKey=liujun_test:45;undo_log:109

09:15:32.959 INFO --- [ batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler : SeataMergeMessage xid=

10.230.150.10:8091:27521540554056293,branchType=AT,resourceId=jdbc:mysql://drdsbggaq2b6y9n5.drds.aliyuncs.com/member

_pressure,lockKey=liujun_test:45;undo_log:109

,clientIp:10.230.150.3,vgroup:member_service

09:15:32.997 INFO --- [rverHandlerThread_1_4_500] i.seata.server.coordinator.AbstractCore : Register branch succes

sfully, xid = 10.230.150.10:8091:27521540554056293, branchId = 27521540554056299, resourceId = jdbc:mysql://drdsbgga

q2b6y9n5.drds.aliyuncs.com/member_pressure ,lockKeys = liujun_test:45;undo_log:109

09:15:33.019 INFO --- [ batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler : xid=10.230.150.10:8091

:27521540554056293,extraData=null,clientIp:10.230.150.3,vgroup:member_service

09:15:33.097 INFO --- [rverHandlerThread_1_5_500] io.seata.server.coordinator.DefaultCore : Rollback branch transa

ction successfully, xid = 10.230.150.10:8091:27521540554056293 branchId = 27521540554056299

09:15:33.133 INFO --- [rverHandlerThread_1_5_500] io.seata.server.coordinator.DefaultCore : Rollback branch transa

ction successfully, xid = 10.230.150.10:8091:27521540554056293 branchId = 27521540554056295

09:15:33.134 INFO --- [rverHandlerThread_1_5_500] io.seata.server.coordinator.DefaultCore : Rollback global transa

ction successfully, xid = 10.230.150.10:8091:27521540554056293.

seata-server 1.8.0 客户端1.8.0 也会出现这个错误

What database?

I mean server.

Acquiring multiple locks in a batch just prints this log and does not affect the final result or the lock retry mechanism.

这个不是的 就只有单个对数据库操作 没有任何并发 跨服务操作

db 是mysql的 用的阿里云的ecs

这个不是的 就只有单个对数据库操作 没有任何并发 跨服务操作

https://github.com/apache/incubator-seata/blob/v1.8.0/server/src/main/java/io/seata/server/storage/db/lock/LockStoreDataBaseDAO.java#L373
see the source code by themselves, in the first competition for multiple locks can not compete to lock will print this unique index conflict log, after this lock retry will not enter the logic, if your transaction occurs to roll back, please check whether the multiple branches are not in the same global transaction, resulting in lock conflicts