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

   <!-- Please do not use this issue template to report security 
vulnerabilities but refer to our [security 
policy](https://github.com/seata/seata/security/policy). -->
   
   - [ ] I have searched the [issues](https://github.com/seata/seata/issues) of 
this repository and believe that this is not a duplicate.
   
   ### Ⅰ. Issue Description
   RM注册成功,seata-seaver在写入lock_table表时,生成的row_key截取了部分长度的id,导致lock_table表数据写入失败
   
   ### Ⅱ. Describe what happened
   
     If there is an exception, please attach the exception trace:
   
   ```
   seata服务端日志:
   2024-05-16 16:08:14.946 ERROR --- [ServerHandlerThread_1_39_500] 
[io.seata.core.exception.AbstractExceptionHandler] [exceptionHandleTemplate] 
[10.200.7.25:18093:18535623205631387]: Catch TransactionException while do RPC, 
request: BranchRegisterRequest{xid='10.200.7.25:18093:18535623205631387', 
branchType=AT, resourceId='jdbc:mysql://10.200.8.1:3306/yxy1', 
lockKey='bpm_instance:449798968234475524;undo_log:577288', 
applicationData='{"autoCommit":false,"skipCheckLock":true}'}
   ==>
   io.seata.core.exception.TransactionException: branch register request 
failed. xid=10.200.7.25:18093:18535623205631387, msg=Duplicate entry 
'jdbc:mysql://10.200.8.1:3306/yxy1^^^bpm_instance^^^4497989682344' for key 
'PRIMARY'
           at 
io.seata.server.AbstractTCInboundHandler$4.execute(AbstractTCInboundHandler.java:187)
 ~[classes!/:1.8.0]
           at 
io.seata.server.AbstractTCInboundHandler$4.execute(AbstractTCInboundHandler.java:179)
 ~[classes!/:1.8.0]
           at 
io.seata.core.exception.AbstractExceptionHandler.exceptionHandleTemplate(AbstractExceptionHandler.java:131)
 ~[seata-core-1.8.0.jar:1.8.0]
           at 
io.seata.server.AbstractTCInboundHandler.handle(AbstractTCInboundHandler.java:179)
 [classes!/:1.8.0]
           at 
io.seata.core.protocol.transaction.BranchRegisterRequest.handle(BranchRegisterRequest.java:136)
 [seata-core-1.8.0.jar:1.8.0]
           at 
io.seata.server.coordinator.DefaultCoordinator.onRequest(DefaultCoordinator.java:523)
 [classes!/:1.8.0]
           at 
io.seata.core.rpc.processor.server.ServerOnRequestProcessor.handleRequestsByMergedWarpMessage(ServerOnRequestProcessor.java:288)
 [seata-core-1.8.0.jar:1.8.0]
           at 
io.seata.core.rpc.processor.server.ServerOnRequestProcessor.onRequestMessage(ServerOnRequestProcessor.java:182)
 [seata-core-1.8.0.jar:1.8.0]
           at 
io.seata.core.rpc.processor.server.ServerOnRequestProcessor.process(ServerOnRequestProcessor.java:122)
 [seata-core-1.8.0.jar:1.8.0]
           at 
io.seata.core.rpc.netty.AbstractNettyRemoting.lambda$processMessage$2(AbstractNettyRemoting.java:281)
 [seata-core-1.8.0.jar:1.8.0]
           at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
~[na:1.8.0_261]
           at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
~[na:1.8.0_261]
           at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
 ~[netty-common-4.1.76.Final.jar:4.1.76.Final]
           at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_261]
   Caused by: io.seata.common.exception.StoreException: Duplicate entry 
'jdbc:mysql://10.200.8.1:3306/yxy1^^^bpm_instance^^^4497989682344' for key 
'PRIMARY'
           at 
io.seata.server.storage.db.lock.LockStoreDataBaseDAO.acquireLock(LockStoreDataBaseDAO.java:199)
 ~[classes!/:1.8.0]
           at 
io.seata.server.storage.db.lock.DataBaseLocker.acquireLock(DataBaseLocker.java:64)
 ~[classes!/:1.8.0]
           at 
io.seata.server.lock.AbstractLockManager.acquireLock(AbstractLockManager.java:65)
 ~[classes!/:1.8.0]
           at 
io.seata.server.session.BranchSession.lock(BranchSession.java:287) 
~[classes!/:1.8.0]
           at 
io.seata.server.transaction.at.ATCore.branchSessionLock(ATCore.java:77) 
~[classes!/:1.8.0]
           at 
io.seata.server.coordinator.AbstractCore.lambda$branchRegister$0(AbstractCore.java:83)
 ~[classes!/:1.8.0]
           at 
io.seata.server.storage.db.session.DataBaseSessionManager.lockAndExecute(DataBaseSessionManager.java:191)
 ~[classes!/:1.8.0]
           at 
io.seata.server.session.SessionHolder.lockAndExecute(SessionHolder.java:367) 
~[classes!/:1.8.0]
           at 
io.seata.server.coordinator.AbstractCore.branchRegister(AbstractCore.java:77) 
~[classes!/:1.8.0]
           at 
io.seata.server.coordinator.DefaultCore.branchRegister(DefaultCore.java:103) 
~[classes!/:1.8.0]
           at 
io.seata.server.coordinator.DefaultCoordinator.doBranchRegister(DefaultCoordinator.java:294)
 [classes!/:1.8.0]
           at 
io.seata.server.AbstractTCInboundHandler$4.execute(AbstractTCInboundHandler.java:184)
 ~[classes!/:1.8.0]
           ... 13 common frames omitted
   Caused by: java.sql.BatchUpdateException: Duplicate entry 
'jdbc:mysql://10.200.8.1:3306/yxy1^^^bpm_instance^^^4497989682344' for key 
'PRIMARY'
           at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
Method) ~[na:1.8.0_261]
           at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 ~[na:1.8.0_261]
           at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 ~[na:1.8.0_261]
           at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
~[na:1.8.0_261]
           at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 
~[mysql-connector-java-5.1.42.jar:5.1.42]
           at com.mysql.jdbc.Util.getInstance(Util.java:408) 
~[mysql-connector-java-5.1.42.jar:5.1.42]
           at 
com.mysql.jdbc.SQLError.createBatchUpdateException(SQLError.java:1162) 
~[mysql-connector-java-5.1.42.jar:5.1.42]
           at 
com.mysql.jdbc.PreparedStatement.executeBatchedInserts(PreparedStatement.java:1587)
 ~[mysql-connector-java-5.1.42.jar:5.1.42]
           at 
com.mysql.jdbc.PreparedStatement.executeBatchInternal(PreparedStatement.java:1253)
 ~[mysql-connector-java-5.1.42.jar:5.1.42]
           at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:970) 
~[mysql-connector-java-5.1.42.jar:5.1.42]
           at 
com.alibaba.druid.pool.DruidPooledPreparedStatement.executeBatch(DruidPooledPreparedStatement.java:565)
 ~[druid-1.2.7.jar:1.2.7]
           at 
io.seata.server.storage.db.lock.LockStoreDataBaseDAO.doAcquireLocks(LockStoreDataBaseDAO.java:371)
 ~[classes!/:1.8.0]
           at 
io.seata.server.storage.db.lock.LockStoreDataBaseDAO.acquireLock(LockStoreDataBaseDAO.java:187)
 ~[classes!/:1.8.0]
           ... 24 common frames omitted
   Caused by: 
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: 
Duplicate entry 
'jdbc:mysql://10.200.8.1:3306/yxy1^^^bpm_instance^^^4497989682344' for key 
'PRIMARY'
           at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
Method) ~[na:1.8.0_261]
           at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 ~[na:1.8.0_261]
           at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 ~[na:1.8.0_261]
           at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
~[na:1.8.0_261]
           at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 
~[mysql-connector-java-5.1.42.jar:5.1.42]
           at com.mysql.jdbc.Util.getInstance(Util.java:408) 
~[mysql-connector-java-5.1.42.jar:5.1.42]
           at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935) 
~[mysql-connector-java-5.1.42.jar:5.1.42]
           at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973) 
~[mysql-connector-java-5.1.42.jar:5.1.42]
           at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909) 
~[mysql-connector-java-5.1.42.jar:5.1.42]
           at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527) 
~[mysql-connector-java-5.1.42.jar:5.1.42]
           at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680) 
~[mysql-connector-java-5.1.42.jar:5.1.42]
           at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2490) 
~[mysql-connector-java-5.1.42.jar:5.1.42]
           at 
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858) 
~[mysql-connector-java-5.1.42.jar:5.1.42]
           at 
com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2079)
 ~[mysql-connector-java-5.1.42.jar:5.1.42]
           at 
com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2013)
 ~[mysql-connector-java-5.1.42.jar:5.1.42]
           at 
com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5104)
 ~[mysql-connector-java-5.1.42.jar:5.1.42]
           at 
com.mysql.jdbc.PreparedStatement.executeBatchedInserts(PreparedStatement.java:1548)
 ~[mysql-connector-java-5.1.42.jar:5.1.42]
           ... 29 common frames omitted
   <==
   
   ```
   
   
   ### Ⅲ. Describe what you expected to happen
   
生成的row_key应为:jdbc:mysql://10.200.8.1:3306/yxy1^^^bpm_instance^^^449798968234475524
   
实际生成的row_key为:jdbc:mysql://10.200.8.1:3306/yxy1^^^bpm_instance^^^4497989682344
   
   ### Ⅳ. How to reproduce it (as minimally and precisely as possible)
   
   1. seata集群,版本1.8,nacos作为注册和配置中心
   2. 集成activity
   3. 分支事务注册成功后,写lock_table失败
   
   Minimal yet complete reproducer code (or URL to code):
   
   
   
   ### Ⅴ. Anything else we need to know?
   
   
   ### Ⅵ. Environment:
   
   - JDK version(e.g. `java -version`):1.8
   - Seata client/server version:  1.8
   - Database version:5.7
   - OS(e.g. `uname -a`):linux
   - Others:


-- 
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