-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I just grabbed the latest Jencks SVN and I'm still getting some weird
behavior. Sometimes components will start, but they won't consume any
messages. If I send a bunch of messages at the component, eventually it will
start consuming them.. Really strange. Sometimes messages get to their final
destination, sometimes I get exceptions from the EIP component. Rollback
looks to be working though.
Here's the exception I'm getting from the EIP component.. The component that
is feeding it is using Spring-JDBC, but I still get the exception if I feed it
with any other standard component.
javax.jbi.messaging.MessagingException: java.lang.IllegalStateException: the
transaction context set in the messageExchange is not bound to the current
thread
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.autoEnlistInTx(DeliveryChannelImpl.java:788)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:337)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:397)
at org.apache.servicemix.eip.EIPEndpoint.send(EIPEndpoint.java:207)
at org.apache.servicemix.eip.EIPEndpoint.done(EIPEndpoint.java:219)
at
org.apache.servicemix.eip.support.AbstractContentBasedRouter.processAsync(AbstractContentBasedRouter.java:131)
at org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:241)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:490)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:464)
at
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
at
org.apache.servicemix.jbi.nmr.flow.jca.JCAFlow.onMessage(JCAFlow.java:515)
at org.jencks.XAEndpoint.onMessage(XAEndpoint.java:129)
at
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:121)
at
org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:61)
at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:695)
at
org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:165)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
Followed by:
20:19:57,403 ERROR
[pool-flow.jca.org.apache.servicemix.jca.ServiceMix-thread-3]
org.apache.servicemix.eip.EIPComponent: Error setting exchange status to ERROR
javax.jbi.messaging.MessagingException: illegal call to send / sendSync
at
org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:571)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:350)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:397)
at
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:58)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
at
org.apache.servicemix.jbi.nmr.flow.jca.JCAFlow.onMessage(JCAFlow.java:515)
at org.jencks.XAEndpoint.onMessage(XAEndpoint.java:129)
at
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:121)
at
org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:61)
at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:695)
at
org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:165)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
Guillaume Nodet wrote:
> I have fixed several problems in jencks recently.
> What patch did you apply ?
>
> On 11/28/06, Steve Kondik <[EMAIL PROTECTED]> wrote:
> I found that I could get redelivery to work by patching Jencks, but
> it's very
> unreliable. Sometimes endpoints will fail to start, messages will get
> dropped, and the EIP component throws exceptions (pipeline in particular)
> about the transaction not being bound to the current thread. I'm also
> using
> Spring-JDBC inside a couple of custom components (using the same
> transaction
> manager). I haven't been able to track down the cause of these problems
> though, but I'm not very familiar with Geronimo's transaction stuff.
>
> I'm sure the devs are aware of it (tickets for failing tests), and the
> supporting libraries are also still in flux. I disabled JCAFlow for
> now until
> I'm closer to release (I'm using SM embedded).
>
>
> cnicolai wrote:
>> Has anyone found a solution for this problem?
>
>> I'm having the same problem (XA error code: -6), even with the 3.1
> snapshot
>> build.
>
>> I tried many kinds of configuration to integrate Spring/Hibernate
> with the
>> servicemix transaction (JCA Flow), but when an exception occurs (i
> mark the
>> transaction by the setRollbackonly) i get this error and the
> modifications
>> are commited in the database.
>
>
>> Thanks.
>
>
>
>
>
>
>> Steve Kondik wrote:
>> I dug into this further, and it turns out to be a problem with Jencks.
>> Jencks
>> tries to commit() in afterDelivery and catches RollbackException,
> which it
>> then rethrows as a ResourceException. The ResourceException gets
> caught
>> by
>> the RA and rethrown again as a RuntimeException, which invalidates the
>> endpoint.
>
>> I removed the rethrow of ResourceException from Jencks, and
> redeliveries
>> work
>> perfectly now.
>
>> I will file a bug/patches against Jencks. I think Jencks 2.0 is
> falling
>> behind the supporting Geronimo code, as it needs other fixes to work
>> correctly
>> (HowlLogFactoryBean no longer works).
>
>
>> Steve Kondik wrote:
>>>>> I'm also seeing this exception on rollback:
>>>>>
>>>>> WARN
>>>>>
> [pool-flow.jca.org.apache.servicemix.jca.{http://services.hmsinc.com/}LLPConnector:endpoint-thread-1]
>
>>>>> Transaction: Error ending association for XAResource
>>>>>
> [EMAIL PROTECTED];
>>>>> transaction will roll back. XA error code: -6
>>>>> javax.transaction.xa.XAException
>>>>> at
>>>>>
> org.apache.activemq.TransactionContext.end(TransactionContext.java:319)
>>>>> at
>>>>>
> org.apache.activemq.ra.LocalAndXATransaction.end(LocalAndXATransaction.java:90)
>
>>>>> at
>>>>>
> org.apache.geronimo.transaction.manager.WrapperNamedXAResource.end(WrapperNamedXAResource.java:51)
>
>>>>> at
>>>>>
> org.apache.geronimo.transaction.manager.TransactionImpl.endResources(TransactionImpl.java:572)
>
>>>>> at
>>>>>
> org.apache.geronimo.transaction.manager.TransactionImpl.endResources(TransactionImpl.java:552)
>
>>>>> at
>>>>>
> org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:401)
>
>>>>> at
>>>>>
> org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:257)
>
>>>>> at org.jencks.XAEndpoint.afterDelivery(XAEndpoint.java:103)
>>>>> at
>>>>>
> org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.afterDelivery(MessageEndpointProxy.java:126)
>
>>>>> at
>>>>>
> org.apache.activemq.ra.MessageEndpointProxy.afterDelivery(MessageEndpointProxy.java:65)
>
>>>>> at
>>>>>
> org.apache.activemq.ra.ServerSessionImpl.afterDelivery(ServerSessionImpl.java:216)
>
>>>>> at
> org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:749)
>>>>> at
>>>>>
> org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:165)
>>>>> at
>>>>>
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>
>>>>> at
>>>>>
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>
>>>>> at java.lang.Thread.run(Thread.java:595)
>>>>> INFO
>>>>>
> [pool-flow.jca.org.apache.servicemix.jca.{http://services.hmsinc.com/}LLPConnector:endpoint-thread-1]
>
>>>>> org.apache.activemq.ra.ServerSessionImpl:8: Endpoint failed to
> process
>>>>> message. Reason: java.lang.RuntimeException: Endpoint after delivery
>>>>> notification failure
>>>>>
>>>>> I'm not sure where this problem is.. My component, Jencks,
> Geronimo TM,
>>>>> ....
>>>>> -6 is XAER_PROTO, so I am a bit lost here.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Guillaume Nodet wrote:
>>>>>>> Weird.
>>>>>>> There are some test cases that check that redelivery works
>>>>>>> on JCA flow ...
>>>>>>> This behavior occurs mainly when using client ack
>>>>>>> (messages are only redelivered when the connection
>>>>>>> which has consumed the messages but not returned any
>>>>>>> acks close).
>>>>>>>
>>>>>>> On 11/15/06, Steve Kondik <[EMAIL PROTECTED]> wrote:
>>>>>>> I've written a few custom components with 3.1-SNAPSHOT. If an
>>>>>>> exception is
>>>>>>> thrown, the transaction does indeed rollback (I'm using
> JCAFlow), but
>>>>>>> no
>>>>>>> redelivery ever occurs.
>>>>>>>
>>>>>>> I've tried configuring a redeliveryPolicy on the connection
> factory,
>>>>>>> but it
>>>>>>> does not seem to help.
>>>>>>>
>>>>>>> I can see that the failed messages are put back on the queue.
> If I
>>>>>>> restart
>>>>>>> ServiceMix, the failed messages get redelivered, but otherwise
> they
>>>>>>> just sit
>>>>>>> on the queue forever.
>>>>>>>
>>>>>>> Is there some bit of magic that I am missing to make redelivery
> work?
>>>>>>> My
>>>>>>> component is a TCP connector for HL7 messages, and I need to be
>>>>>>> absolutely
>>>>>>> sure that nothing is lost due to a remote server being down.
>>>>>>>
>
>
>
>>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFFa5HKMrBfzfMVwMcRAr/mAKCexx2g6YBXmOhDRTUc6bNof9TpoACgjhpg
JHBPo1Fm5LxpnisIXnwBj50=
=XaSy
-----END PGP SIGNATURE-----