This is fixed :)
Thanks. That has moved us forward again.
If we throw an error in the process and try to roll the transaction back
onto the queue, we see a conflict where one component seems to be trying
to heuristically commit instead of rolling back:
13:58:48,788 | DEBUG | Thread-7 | TransactionContext
| ache.activemq.TransactionContext 384 | Rollback:
[globalId=200000005555ffffffbf0a416ffffff9b000000000000000000000000000000000000000000000000,branchId=100000005555ffffffbf0a416ffffff9b000000000000000000000000000000000000000000000000]
13:58:48,792 | DEBUG | /127.0.0.1:36345 | XATransaction
| tivemq.transaction.XATransaction 125 | XA Transaction rollback:
XID:1197822575:02000000000000005555bf000a04169b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:01000000000000005555bf000a04169b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
13:58:48,793 | WARN | Thread-7 | ServerSessionImpl:3
| he.activemq.ra.ServerSessionImpl 222 | Local transaction had not
been commited. Commiting now.
13:58:48,797 | DEBUG | Thread-2 | DeliveryChannelImpl
| bi.messaging.DeliveryChannelImpl 578 | Processing inbound
exchange: InOut[
id: ID:workstation22155.36319-1157547512819-10:0
status: Done
role: provider
service: {http://uk.x.com/ott/1.1}sgmbHttpOut
endpoint: sgmbHttpOut
in: <?xml version="1.0"
encoding="UTF-8"?><SUBMIT-REQUEST></SUBMIT-REQUEST>
out: <?xml version="1.0" encoding="UTF-8"?><SUBMIT-RESPONSE
status="FAIL"></SUBMIT-RESPONSE>
]
13:58:48,798 | DEBUG | Thread-2 | DeliveryChannelImpl
| bi.messaging.DeliveryChannelImpl 720 | Notifying exchange
ID:workstation22155.-36319-1157547512819-10:0(156d7c8) in
DeliveryChannel{sgmbHttpOut} from processInboundSynchronousExchange
13:58:48,799 | DEBUG | Thread-8 | DeliveryChannelImpl
| bi.messaging.DeliveryChannelImpl 714 | Notified:
ID:workstation22155.36319-1157547512819-10:0(156d7c8) in
DeliveryChannel{sgmbHttpOut} from sendSync
13:58:48,834 | DEBUG | Thread-7 | ServerSessionImpl:3
| he.activemq.ra.ServerSessionImpl 167 | Endpoint failed to process
message.
java.lang.RuntimeException: Endpoint after delivery notification failure
at
org.apache.activemq.ra.ServerSessionImpl.afterDelivery(ServerSessionImpl.java:216)
at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:723)
at
org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:163)
at
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.IllegalStateException: There is no transaction in
progress.
at
org.apache.geronimo.transaction.context.InheritableTransactionContext.delistResource(InheritableTransactionContext.java:97)
at
org.apache.geronimo.transaction.context.GeronimoTransactionDelegate.delistResource(GeronimoTransactionDelegate.java:55)
at org.jencks.XAEndpoint.afterDelivery(XAEndpoint.java:97)
at
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.afterDelivery(MessageEndpointProxy.java:125)
at
org.apache.activemq.ra.MessageEndpointProxy.afterDelivery(MessageEndpointProxy.java:64)
at
org.apache.activemq.ra.ServerSessionImpl.afterDelivery(ServerSessionImpl.java:214)
... 5 more
13:58:48,835 | INFO | Thread-7 | ServerSessionImpl:3
| he.activemq.ra.ServerSessionImpl 168 | Endpoint failed to process
message. Reason: java.lang.RuntimeException: Endpoint after delivery
notification failure
13:58:48,836 | DEBUG | Thread-7 | ServerSessionImpl:3
| he.activemq.ra.ServerSessionImpl 172 | run loop end
13:58:48,836 | DEBUG | Thread-7 | ServerSessionImpl:3
| he.activemq.ra.ServerSessionImpl 252 | Endpoint did not release
properly: java.lang.IllegalStateException: Cannot commit if the
transaction is not bound to the current thread
java.lang.IllegalStateException: Cannot commit if the transaction is not
bound to the current thread
at
org.apache.geronimo.transaction.context.GeronimoTransactionDelegate.rollback(GeronimoTransactionDelegate.java:72)
at org.jencks.XAEndpoint.release(XAEndpoint.java:133)
at
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointDead.enter(MessageEndpointProxy.java:140)
at
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointState.transition(MessageEndpointProxy.java:98)
at
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.release(MessageEndpointProxy.java:133)
at
org.apache.activemq.ra.MessageEndpointProxy.release(MessageEndpointProxy.java:68)
at
org.apache.activemq.ra.ServerSessionImpl.close(ServerSessionImpl.java:250)
at
org.apache.activemq.ra.ServerSessionPoolImpl.removeFromPool(ServerSessionPoolImpl.java:180)
at
org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:177)
at
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Thread.java:595)
Not sure if this is a bug, or just us not handling a message exchange
completely.
Terry