问题描述
MysqL 5.7,Druid数据源,Atomikos 4.0.4。两个数据库。一提交,一回滚。
我有springmvc应用程序,它从xxljob收集数据并保存在数据库中。尝试将数据持久保存在数据库中时出现随机问题。这个问题很少发生,只有千分之一的人。但是不能仅仅理解原因。
**<bean id="jtaTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager">
<bean class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close">
<property name="forceShutdown" value="true"/>
</bean>
</property>
<property name="userTransaction">
<bean class="com.atomikos.icatch.jta.UserTransactionImp">
<property name="transactionTimeout" value="30000" />
</bean>
</property>
<!--<property name="allowCustomIsolationLevels" value="true"/>-->
</bean>
<tx:annotation-driven transaction-manager="jtaTransactionManager" />
@Transactional(value = "jtaTransactionManager",timeout = 30,rollbackFor = Exception.class)**
>
2020-09-08 17:15:25 [DEBUG] com.atomikos.datasource.xa.XAResourceTransaction[32] - XAResource.prepare ( 636F6D2E61746F6D696B6F732E737072696E672E6A6462632E746D3135393935
35363532343635353237363139:636F6D2E61746F6D696B6F732E737072696E672E6A6462632E746D3239303836 ) returning OK on resource MysqL/main1 represented by XAResource instance co
m.MysqL.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@72f9243a
2020-09-08 17:15:25 [DEBUG] com.atomikos.datasource.xa.XAResourceTransaction[32] - XAResource.prepare ( 636F6D2E61746F6D696B6F732E737072696E672E6A6462632E746D3135393935
35363532343635353237363139:636F6D2E61746F6D696B6F732E737072696E672E6A6462632E746D3239303837 ) returning OK on resource MysqL/main2 represented by XAResource instance co
m.MysqL.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@6e81e6b
2020-09-08 17:15:25 [DEBUG] com.atomikos.recovery.xa.XaResourceRecoveryManager[32] - Resource com.atomikos.spring.jdbc.tm recovering XID: com.atomikos.spring.jdbc.tm159
955652465527619com.atomikos.spring.jdbc.tm29086
2020-09-08 17:15:25 [DEBUG] com.atomikos.datasource.xa.XAResourceTransaction[32] - XAResource.commit ( 636F6D2E61746F6D696B6F732E737072696E672E6A6462632E746D31353939353
5363532343635353237363139:636F6D2E61746F6D696B6F732E737072696E672E6A6462632E746D3239303836,false ) on resource MysqL/main1 represented by XAResource instance com.mysq
l.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@72f9243a
2020-09-08 17:15:25 [DEBUG] com.atomikos.recovery.xa.XaResourceRecoveryManager[32] - Resource com.atomikos.spring.jdbc.tm recovering XID: com.atomikos.spring.jdbc.tm159
955652465527619com.atomikos.spring.jdbc.tm29087
2020-09-08 17:15:25 [DEBUG] com.atomikos.recovery.xa.XaResourceRecoveryManager[32] - Presumed abort of xid: com.atomikos.spring.jdbc.tm159955652465527619com.atomikos.sp
ring.jdbc.tm29087
2020-09-08 17:15:25 [DEBUG] com.atomikos.datasource.xa.XAResourceTransaction[32] - XAResource.commit ( 636F6D2E61746F6D696B6F732E737072696E672E6A6462632E746D31353939353
5363532343635353237363139:636F6D2E61746F6D696B6F732E737072696E672E6A6462632E746D3239303837,false ) on resource MysqL/main2 represented by XAResource instance com.mysq
l.jdbc.jdbc2.optional.JDBC4SuspendableXAConnection@6e81e6b
2020-09-08 17:15:25 [WARN ] com.atomikos.datasource.xa.XAResourceTransaction[40] - XA resource 'MysqL/main2': commit for XID '636F6D2E61746F6D696B6F732E737072696E672E6A
6462632E746D313539393535363532343635353237363139:636F6D2E61746F6D696B6F732E737072696E672E6A6462632E746D3239303837' raised -4: the supplied XID is invalid for this XA re
source
com.MysqL.jdbc.jdbc2.optional.MysqLXAException: XAER_NOTA: UnkNown XID
at com.MysqL.jdbc.jdbc2.optional.MysqLXAConnection.mapXAExceptionFromsqlException(MysqLXAConnection.java:581)
at com.MysqL.jdbc.jdbc2.optional.MysqLXAConnection.dispatchCommand(MysqLXAConnection.java:566)
at com.MysqL.jdbc.jdbc2.optional.MysqLXAConnection.commit(MysqLXAConnection.java:543)
at com.MysqL.jdbc.jdbc2.optional.SuspendableXAConnection.commit(SuspendableXAConnection.java:125)
at com.atomikos.datasource.xa.XAResourceTransaction.commit(XAResourceTransaction.java:555)
at com.atomikos.icatch.imp.CommitMessage.send(CommitMessage.java:52)
at com.atomikos.icatch.imp.CommitMessage.send(CommitMessage.java:23)
at com.atomikos.icatch.imp.PropagationMessage.submit(PropagationMessage.java:67)
at com.atomikos.icatch.imp.Propagator$PropagatorThread.run(Propagator.java:63)
at com.atomikos.icatch.imp.Propagator.submitPropagationMessage(Propagator.java:42)
at com.atomikos.icatch.imp.CoordinatorStateHandler.commitFromWithinCallback(CoordinatorStateHandler.java:373)
at com.atomikos.icatch.imp.IndoubtStateHandler$1.doCommit(IndoubtStateHandler.java:112)
at com.atomikos.icatch.imp.CoordinatorStateHandler.commitWithAfterCompletionNotification(CoordinatorStateHandler.java:581)
at com.atomikos.icatch.imp.IndoubtStateHandler.commit(IndoubtStateHandler.java:107)
at com.atomikos.icatch.imp.CoordinatorImp.commit(CoordinatorImp.java:548)
at com.atomikos.icatch.imp.CoordinatorImp.terminate(CoordinatorImp.java:690)
at com.atomikos.icatch.imp.CompositeTransactionImp.commit(CompositeTransactionImp.java:282)
at com.atomikos.icatch.jta.TransactionImp.commit(TransactionImp.java:172)
at com.atomikos.icatch.jta.TransactionManagerImp.commit(TransactionManagerImp.java:414)
at com.atomikos.icatch.jta.UserTransactionImp.commit(UserTransactionImp.java:86)
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1020)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:484)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:291)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
at com.sun.proxy.$Proxy461.synchUnpulishNewProduct(UnkNown Source)
at com.mia.pop.product.SynchUnpulishProduct.execute(SynchUnpulishProduct.java:149)
at com.mia.pop.jobhandler.XxlJobHandleService.synchUnpulishProductTaskJob(XxlJobHandleService.java:527)
at sun.reflect.GeneratedMethodAccessor1534.invoke(UnkNown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.xxl.job.core.handler.impl.MethodJobHandler.execute(MethodJobHandler.java:29)
at com.xxl.job.core.thread.JobThread.run(JobThread.java:152)
Caused by: java.sql.sqlException: XAER_NOTA: UnkNown XID
at com.MysqL.jdbc.sqlError.createsqlException(sqlError.java:998)
at com.MysqL.jdbc.MysqLIO.checkerrorPacket(MysqLIO.java:3847)
at com.MysqL.jdbc.MysqLIO.checkerrorPacket(MysqLIO.java:3783)
at com.MysqL.jdbc.MysqLIO.sendCommand(MysqLIO.java:2447)
at com.MysqL.jdbc.MysqLIO.sqlQueryDirect(MysqLIO.java:2594)
at com.MysqL.jdbc.ConnectionImpl.execsql(ConnectionImpl.java:2545)
at com.MysqL.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1901)
at com.MysqL.jdbc.PreparedStatement.execute(PreparedStatement.java:1193)
at com.MysqL.jdbc.StatementImpl.createResultSetUsingServerFetch(StatementImpl.java:666)
at com.MysqL.jdbc.StatementImpl.execute(StatementImpl.java:806)
at com.MysqL.jdbc.StatementImpl.execute(StatementImpl.java:748)
at com.MysqL.jdbc.jdbc2.optional.MysqLXAConnection.dispatchCommand(MysqLXAConnection.java:560)
----------
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)