In Microservice scenario, A.a1 invoke B.b1 invoke A.a2, GlobalTransaction fail
Opened this issue · 0 comments
Hi all,
In version 5.0.7
In this scenario:
In ProcessA, Service A.a1(operation) remotecall Service B.b1 in ProcessB, and B.b1 remotecall ServiceA.a2 in ProcessA
transaction failed with "recursive detect" exception when TM in ProcessA call prepare to itself
please see errlog below:
0827 15:13:53.180|EBUG|a|-d-0[share]-thread-1|ParticipantAdapter.logDebug(32)| Calling prepare on http://localhost:28001/atomikos/tm-a159851243155600001/tm-a159851243155600001|
0827 15:13:53.480|EBUG|a|qtp81355344-25|AtomikosRestPort.logDebug(32)| prepare ( ... ) received for root tm-a159851243155600001|
0827 15:13:53.481|WARN|a|qtp81355344-25|AtomikosRestPort.logWarning(40)| Error in prepare for root tm-a159851243155600001|
com.atomikos.icatch.RollbackException: Recursion detected
at com.atomikos.icatch.imp.CoordinatorImp.prepare(CoordinatorImp.java:521)
at com.atomikos.remoting.twopc.AtomikosRestPort.prepare(AtomikosRestPort.java:123)
... more
at java.lang.Thread.run(Thread.java:748)
0827 15:13:53.523|WARN|a|-d-0[share]-thread-1|ParticipantAdapter.logWarning(40)| Remote participant not available - any remote work will rollback...|
javax.ws.rs.NotFoundException: HTTP 404 Not Found
... more
I found the nestet branch transid in A is lost, A prepare with the transid---“http://localhost:28001/atomikos/tm-a159851243155600001/tm-a159851243155600001”---is wrong, should be tm-a159851243155600001/tm-??
Any help about this? thans a lot!