Springboot,Activiti,Atomikos:
com.atomikos.datasource.xa.session.InvalidSessionHandleStateException: Transaction is marked for rollback only or has timed out
at com.atomikos.datasource.xa.session.NotInBranchStateHandler.checkEnlistBeforeUse(NotInBranchStateHandler.java:39)
at com.atomikos.datasource.xa.session.TransactionContext.checkEnlistBeforeUse(TransactionContext.java:70)
at com.atomikos.datasource.xa.session.SessionHandleState.notifyBeforeUse(SessionHandleState.java:160)
at com.atomikos.jdbc.AtomikosConnectionProxy.enlist(AtomikosConnectionProxy.java:207)
at com.atomikos.jdbc.AtomikosConnectionProxy.invoke(AtomikosConnectionProxy.java:122)
确认了bug原因:一开始由于并发导致了事务回滚,然后事务状态被标记为rollback,JTA中线程和事务状态是绑定关系,在线程被回收之前,这个线程所有调用oracle连接的sql,都会报rollback异常,直到线程被销毁。
看了下setRollbackOnly ()方法,发现最后是会