apache / apache/incubator-seata-samples

子事务提交报错:java.sql.SQLException: io.seata.core.exception.TransactionException

Open
#156 2 comments 1 reaction 0 assignees View on GitHub
Dominant language
Java
Stars
2.4k
Forks
2k
PR merge metrics
No merged PRs in 30d

Description

在示例中,扣减仓库(当仓库不存在数据时)数量时报错:
2019-06-13 16:13:25.576 INFO 13872 --- [atch_RMROLE_4_8] io.seata.core.rpc.netty.RmRpcClient : RmRpcClient sendResponse xid=192.168.136.1:8091:2014124048,branchId=2014124049,branchStatus=PhaseTwo_Rollbacked,result code =Success,getMsg =null
org.springframework.jdbc.UncategorizedSQLException:
### Error committing transaction. Cause: java.sql.SQLException: io.seata.core.exception.TransactionException: Response[TransactionException[192.168.136.1:8091:2014124048]]
### Cause: java.sql.SQLException: io.seata.core.exception.TransactionException: Response[TransactionException[192.168.136.1:8091:2014124048]]
; uncategorized SQLException; SQL state [null]; error code [0]; io.seata.core.exception.TransactionException: Response[TransactionException[192.168.136.1:8091:2014124048]]; nested exception is java.sql.SQLException: io.seata.core.exception.TransactionException: Response[TransactionException[192.168.136.1:8091:2014124048]]
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.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
at com.sun.proxy.$Proxy79.update(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:294)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
at com.sun.proxy.$Proxy80.decreaseStorage(Unknown Source)
at io.seata.samples.integration.storage.service.TStorageServiceImpl.decreaseStorage(TStorageServiceImpl.java:26)
at io.seata.samples.integration.storage.service.TStorageServiceImpl$$FastClassBySpringCGLIB$$29699009.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:684)
at io.seata.samples.integration.storage.service.TStorageServiceImpl$$EnhancerBySpringCGLIB$$ae971c20.decreaseStorage()
at io.seata.samples.integration.storage.dubbo.StorageDubboServiceImpl.decreaseStorage(StorageDubboServiceImpl.java:28)
at com.alibaba.dubbo.common.bytecode.Wrapper1.invokeMethod(Wrapper1.java)
at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:47)
at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:76)
at com.alibaba.dubbo.config.invoker.DelegateProviderMetaDataInvoker.invoke(DelegateProviderMetaDataInvoker.java:52)
at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:56)
at io.seata.integration.dubbo.alibaba.TransactionPropagationFilter.invoke(TransactionPropagationFilter.java:61)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72)
at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:62)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72)
at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72)
at com.alibaba.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:42)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72)
at com.alibaba.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:78)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72)
at com.alibaba.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:73)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72)
at com.alibaba.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:138)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72)
at com.alibaba.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72)
at com.alibaba.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:38)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72)
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:104)
at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:96)
at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:173)
at com.alibaba.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:51)
at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:57)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: io.seata.core.exception.TransactionException: Response[TransactionException[192.168.136.1:8091:2014124048]]
at io.seata.rm.datasource.ConnectionProxy.recognizeLockKeyConflictException(ConnectionProxy.java:130)
at io.seata.rm.datasource.ConnectionProxy.processGlobalTransactionCommit(ConnectionProxy.java:179)
at io.seata.rm.datasource.ConnectionProxy.commit(ConnectionProxy.java:156)
at org.apache.ibatis.transaction.jdbc.JdbcTransaction.commit(JdbcTransaction.java:72)
at org.apache.ibatis.executor.BaseExecutor.commit(BaseExecutor.java:244)
at org.apache.ibatis.executor.CachingExecutor.commit(CachingExecutor.java:119)
at org.apache.ibatis.session.defaults.DefaultSqlSession.commit(DefaultSqlSession.java:224)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:437)
... 42 more
Caused by: io.seata.core.exception.TransactionException: Response[TransactionException[192.168.136.1:8091:2014124048]]
at io.seata.rm.AbstractResourceManager.branchRegister(AbstractResourceManager.java:68)
at io.seata.rm.DefaultResourceManager.branchRegister(DefaultResourceManager.java:96)
at io.seata.rm.datasource.ConnectionProxy.register(ConnectionProxy.java:198)
at io.seata.rm.datasource.ConnectionProxy.processGlobalTransactionCommit(ConnectionProxy.java:177)
... 48 more
2019-06-13 16:13:26.972 WARN 13872 --- [20882-thread-21] c.a.dubbo.rpc.filter.TimeoutFilter : [DUBBO] invoke time out. method: decreaseStorage arguments: [CommodityDTO(id=null, commodityCode=P190510529590122, name=null, count=2)] , url is dubbo://192.168.136.1:20882/io.seata.samples.integration.common.dubbo.StorageDubboService?anyhost=true&application=dubbo-storage-example&bean.name=ServiceBean:io.seata.samples.integration.common.dubbo.StorageDubboService:1.0.0&bind.ip=192.168.136.1&bind.port=20882&dubbo=2.0.2&generic=false&interface=io.seata.samples.integration.common.dubbo.StorageDubboService&methods=decreaseStorage&pid=13872&qos.enable=false&revision=1.0.0&side=provider&timeout=3000×tamp=1560405720554&version=1.0.0, invoke elapsed 4436 ms., dubbo version: 2.6.5, current host: 192.168.136.1
2019-06-13 16:13:27.999 WARN 13872 --- [20882-thread-20] c.a.dubbo.rpc.filter.TimeoutFilter : [DUBBO] invoke time out. method: decreaseStorage arguments: [CommodityDTO(id=null, commodityCode=P190510529590122, name=null, count=2)] , url is dubbo://192.168.136.1:20882/io.seata.samples.integration.common.dubbo.StorageDubboService?anyhost=true&application=dubbo-storage-example&bean.name=ServiceBean:io.seata.samples.integration.common.dubbo.StorageDubboService:1.0.0&bind.ip=192.168.136.1&bind.port=20882&dubbo=2.0.2&generic=false&interface=io.seata.samples.integration.common.dubbo.StorageDubboService&methods=decreaseStorage&pid=13872&qos.enable=false&revision=1.0.0&side=provider&timeout=3000×tamp=1560405720554&version=1.0.0, invoke elapsed 8458 ms., dubbo version: 2.6.5, current host: 192.168.136.1

Contributor guide

Open the contributing guide

Research direction

Reproduce the missing-warehouse case using the storage service entry points in TStorageServiceImpl.java:26 and StorageDubboServiceImpl.java:28. Then trace the commit path through ConnectionProxy.processGlobalTransactionCommit and branchRegister, as shown in the stack trace. Done means the scenario no longer produces the reported transaction exception and Dubbo timeouts.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, spring
Domain
backend, distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.