You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Frank Schwarz <fs...@gmx.net> on 2011/03/18 07:12:38 UTC

Error shutting down Camel

Hi,

I am having trouble to shut-down Camel properly. One of three errors 
will occur (at random) - see below. My setting is Apache Camel (2.6) 
with ActiveMQ (5.4.2), Atomikos TransactionManager (3.7.0), and Spring 
(3.0.5)

The errors will occur if I shutdown Camel indirectly by closing the 
Spring context. If I shutdown the Camel context beforehand with 
SpringCamelContext#destroy(), then the Spring context will also close 
without any errors.

I already experimented quite some time with 'depends-on'-attributes in 
the Spring configuration - without luck so far.
What am I missing?

Regards,
Frank

(This is a re-post, as Nabble seems to cause problems with SPF.)

(1) -------

    17.03.2011 22:34:12 com.atomikos.diagnostics.Slf4jConsole println
    WARNUNG: atomikos connection pool 'amq1': destroying pool...
    17.03.2011 22:35:02
    org.springframework.jms.listener.DefaultMessageListenerContainer
    handleListenerSetupFailure
    WARNUNG: Setup of JMS message listener invoker failed for
    destination 'OrderQueue' - trying to recover. Cause: Heuristic
    completion: outcome state is mixed; nested exception is
    javax.transaction.HeuristicMixedException: Heuristic Exception
    17.03.2011 22:35:03 com.atomikos.diagnostics.Slf4jConsole println
    WARNUNG: Error in proxy
    java.lang.IllegalStateException: XATransactionResource already closed
    at
    com.atomikos.datasource.xa.XATransactionalResource.getResourceTransaction(XATransactionalResource.java:400)
    at
    com.atomikos.datasource.xa.session.BranchEnlistedStateHandler.<init>(BranchEnlistedStateHandler.java:54)
    at
    com.atomikos.datasource.xa.session.NotInBranchStateHandler.checkEnlistBeforeUse(NotInBranchStateHandler.java:66)
    at
    com.atomikos.datasource.xa.session.TransactionContext.checkEnlistBeforeUse(TransactionContext.java:85)
    at
    com.atomikos.datasource.xa.session.SessionHandleState.notifyBeforeUse(SessionHandleState.java:176)
    at
    com.atomikos.jms.ConsumerProducerSupport.enlist(ConsumerProducerSupport.java:92)
    at
    com.atomikos.jms.AtomikosJmsMessageConsumerProxy.receive(AtomikosJmsMessageConsumerProxy.java:70)
    at
    com.atomikos.jms.AtomikosJmsMessageConsumerProxy.receive(AtomikosJmsMessageConsumerProxy.java:137)
    at
    org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveMessage(AbstractPollingMessageListenerContainer.java:429)
    at
    org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:310)
    at
    org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:243)
    at
    org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
    at
    org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)
    at
    org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)
    at java.lang.Thread.run(Thread.java:662)

    17.03.2011 22:35:08
    org.springframework.jms.listener.DefaultMessageListenerContainer
    handleListenerSetupFailure
    WARNUNG: Setup of JMS message listener invoker failed for
    destination 'OrderQueue' - trying to recover. Cause: Error in proxy;
    nested exception is java.lang.IllegalStateException:
    XATransactionResource already closed


(2) -------

    WARNUNG: atomikos connection pool 'amq1': destroying pool...
    17.03.2011 22:36:45
    org.springframework.jms.listener.DefaultMessageListenerContainer
    handleListenerSetupFailure
    WARNUNG: Setup of JMS message listener invoker failed for
    destination 'OrderQueue' - trying to recover. Cause: Heuristic
    completion: outcome state is mixed; nested exception is
    javax.transaction.HeuristicMixedException: Heuristic Exception


(3) -----

    WARNUNG: atomikos connection pool 'amq1': destroying pool...
    17.03.2011 22:37:56 com.atomikos.diagnostics.Slf4jConsole println
    WARNUNG: Error delegating call to getTransacted on JMS driver
    java.lang.NullPointerException
    at
    org.apache.activemq.ActiveMQXASession.getTransacted(ActiveMQXASession.java:72)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at
    com.atomikos.jms.AtomikosJmsXaSessionProxy.invoke(AtomikosJmsXaSessionProxy.java:183)
    at $Proxy45.getTransacted(Unknown Source)
    at
    org.springframework.jms.listener.AbstractMessageListenerContainer.commitIfNecessary(AbstractMessageListenerContainer.java:571)
    at
    org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:358)
    at
    org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:243)
    at
    org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
    at
    org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)
    at
    org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)
    at java.lang.Thread.run(Thread.java:662)

    17.03.2011 22:37:56
    org.springframework.jms.listener.DefaultMessageListenerContainer
    handleListenerSetupFailure
    WARNUNG: Setup of JMS message listener invoker failed for
    destination 'OrderQueue' - trying to recover. Cause: null
    17.03.2011 22:37:56 com.atomikos.diagnostics.Slf4jConsole println
    WARNUNG: Error in proxy
    java.lang.IllegalStateException: XATransactionResource already closed
    at
    com.atomikos.datasource.xa.XATransactionalResource.getResourceTransaction(XATransactionalResource.java:400)
    at
    com.atomikos.datasource.xa.session.BranchEnlistedStateHandler.<init>(BranchEnlistedStateHandler.java:54)
    at
    com.atomikos.datasource.xa.session.NotInBranchStateHandler.checkEnlistBeforeUse(NotInBranchStateHandler.java:66)
    at
    com.atomikos.datasource.xa.session.TransactionContext.checkEnlistBeforeUse(TransactionContext.java:85)
    at
    com.atomikos.datasource.xa.session.SessionHandleState.notifyBeforeUse(SessionHandleState.java:176)
    at
    com.atomikos.jms.ConsumerProducerSupport.enlist(ConsumerProducerSupport.java:92)
    at
    com.atomikos.jms.AtomikosJmsMessageConsumerProxy.receive(AtomikosJmsMessageConsumerProxy.java:70)
    at
    com.atomikos.jms.AtomikosJmsMessageConsumerProxy.receive(AtomikosJmsMessageConsumerProxy.java:137)
    at
    org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveMessage(AbstractPollingMessageListenerContainer.java:429)
    at
    org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:310)
    at
    org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:243)
    at
    org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
    at
    org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)
    at
    org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)
    at java.lang.Thread.run(Thread.java:662)

    17.03.2011 22:38:01
    org.springframework.jms.listener.DefaultMessageListenerContainer
    handleListenerSetupFailure
    WARNUNG: Setup of JMS message listener invoker failed for
    destination 'OrderQueue' - trying to recover. Cause: Error in proxy;
    nested exception is java.lang.IllegalStateException:
    XATransactionResource already closed


Re: Error shutting down Camel

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

For me it seems Spring <bean> stuff doesn't offer fine grained control
of startup/shutdown ordering of beans. And thus it can become
troublesome to get properly ordered.

That said. James found an issue in Camel that would cause beans to be
started earler than intended, under certain circumstances, such as
when using 2+ <camelContext>. I would not expect that bug to affect
your use-case. But you can try the 2.7 release to see if that helps.

If you have AMQ embedded (server, and not just client) then AMQ should
be started first, and stopped last.

So you need to have Camel depend on AMQ


On Fri, Mar 18, 2011 at 7:12 AM, Frank Schwarz <fs...@gmx.net> wrote:
> Hi,
>
> I am having trouble to shut-down Camel properly. One of three errors will
> occur (at random) - see below. My setting is Apache Camel (2.6) with
> ActiveMQ (5.4.2), Atomikos TransactionManager (3.7.0), and Spring (3.0.5)
>
> The errors will occur if I shutdown Camel indirectly by closing the Spring
> context. If I shutdown the Camel context beforehand with
> SpringCamelContext#destroy(), then the Spring context will also close
> without any errors.
>
> I already experimented quite some time with 'depends-on'-attributes in the
> Spring configuration - without luck so far.
> What am I missing?
>
> Regards,
> Frank
>
> (This is a re-post, as Nabble seems to cause problems with SPF.)
>
> (1) -------
>
>   17.03.2011 22:34:12 com.atomikos.diagnostics.Slf4jConsole println
>   WARNUNG: atomikos connection pool 'amq1': destroying pool...
>   17.03.2011 22:35:02
>   org.springframework.jms.listener.DefaultMessageListenerContainer
>   handleListenerSetupFailure
>   WARNUNG: Setup of JMS message listener invoker failed for
>   destination 'OrderQueue' - trying to recover. Cause: Heuristic
>   completion: outcome state is mixed; nested exception is
>   javax.transaction.HeuristicMixedException: Heuristic Exception
>   17.03.2011 22:35:03 com.atomikos.diagnostics.Slf4jConsole println
>   WARNUNG: Error in proxy
>   java.lang.IllegalStateException: XATransactionResource already closed
>   at
>
> com.atomikos.datasource.xa.XATransactionalResource.getResourceTransaction(XATransactionalResource.java:400)
>   at
>
> com.atomikos.datasource.xa.session.BranchEnlistedStateHandler.<init>(BranchEnlistedStateHandler.java:54)
>   at
>
> com.atomikos.datasource.xa.session.NotInBranchStateHandler.checkEnlistBeforeUse(NotInBranchStateHandler.java:66)
>   at
>
> com.atomikos.datasource.xa.session.TransactionContext.checkEnlistBeforeUse(TransactionContext.java:85)
>   at
>
> com.atomikos.datasource.xa.session.SessionHandleState.notifyBeforeUse(SessionHandleState.java:176)
>   at
>
> com.atomikos.jms.ConsumerProducerSupport.enlist(ConsumerProducerSupport.java:92)
>   at
>
> com.atomikos.jms.AtomikosJmsMessageConsumerProxy.receive(AtomikosJmsMessageConsumerProxy.java:70)
>   at
>
> com.atomikos.jms.AtomikosJmsMessageConsumerProxy.receive(AtomikosJmsMessageConsumerProxy.java:137)
>   at
>
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveMessage(AbstractPollingMessageListenerContainer.java:429)
>   at
>
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:310)
>   at
>
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:243)
>   at
>
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
>   at
>
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)
>   at
>
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)
>   at java.lang.Thread.run(Thread.java:662)
>
>   17.03.2011 22:35:08
>   org.springframework.jms.listener.DefaultMessageListenerContainer
>   handleListenerSetupFailure
>   WARNUNG: Setup of JMS message listener invoker failed for
>   destination 'OrderQueue' - trying to recover. Cause: Error in proxy;
>   nested exception is java.lang.IllegalStateException:
>   XATransactionResource already closed
>
>
> (2) -------
>
>   WARNUNG: atomikos connection pool 'amq1': destroying pool...
>   17.03.2011 22:36:45
>   org.springframework.jms.listener.DefaultMessageListenerContainer
>   handleListenerSetupFailure
>   WARNUNG: Setup of JMS message listener invoker failed for
>   destination 'OrderQueue' - trying to recover. Cause: Heuristic
>   completion: outcome state is mixed; nested exception is
>   javax.transaction.HeuristicMixedException: Heuristic Exception
>
>
> (3) -----
>
>   WARNUNG: atomikos connection pool 'amq1': destroying pool...
>   17.03.2011 22:37:56 com.atomikos.diagnostics.Slf4jConsole println
>   WARNUNG: Error delegating call to getTransacted on JMS driver
>   java.lang.NullPointerException
>   at
>
> org.apache.activemq.ActiveMQXASession.getTransacted(ActiveMQXASession.java:72)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>   at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>   at java.lang.reflect.Method.invoke(Method.java:597)
>   at
>
> com.atomikos.jms.AtomikosJmsXaSessionProxy.invoke(AtomikosJmsXaSessionProxy.java:183)
>   at $Proxy45.getTransacted(Unknown Source)
>   at
>
> org.springframework.jms.listener.AbstractMessageListenerContainer.commitIfNecessary(AbstractMessageListenerContainer.java:571)
>   at
>
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:358)
>   at
>
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:243)
>   at
>
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
>   at
>
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)
>   at
>
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)
>   at java.lang.Thread.run(Thread.java:662)
>
>   17.03.2011 22:37:56
>   org.springframework.jms.listener.DefaultMessageListenerContainer
>   handleListenerSetupFailure
>   WARNUNG: Setup of JMS message listener invoker failed for
>   destination 'OrderQueue' - trying to recover. Cause: null
>   17.03.2011 22:37:56 com.atomikos.diagnostics.Slf4jConsole println
>   WARNUNG: Error in proxy
>   java.lang.IllegalStateException: XATransactionResource already closed
>   at
>
> com.atomikos.datasource.xa.XATransactionalResource.getResourceTransaction(XATransactionalResource.java:400)
>   at
>
> com.atomikos.datasource.xa.session.BranchEnlistedStateHandler.<init>(BranchEnlistedStateHandler.java:54)
>   at
>
> com.atomikos.datasource.xa.session.NotInBranchStateHandler.checkEnlistBeforeUse(NotInBranchStateHandler.java:66)
>   at
>
> com.atomikos.datasource.xa.session.TransactionContext.checkEnlistBeforeUse(TransactionContext.java:85)
>   at
>
> com.atomikos.datasource.xa.session.SessionHandleState.notifyBeforeUse(SessionHandleState.java:176)
>   at
>
> com.atomikos.jms.ConsumerProducerSupport.enlist(ConsumerProducerSupport.java:92)
>   at
>
> com.atomikos.jms.AtomikosJmsMessageConsumerProxy.receive(AtomikosJmsMessageConsumerProxy.java:70)
>   at
>
> com.atomikos.jms.AtomikosJmsMessageConsumerProxy.receive(AtomikosJmsMessageConsumerProxy.java:137)
>   at
>
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveMessage(AbstractPollingMessageListenerContainer.java:429)
>   at
>
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:310)
>   at
>
> org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:243)
>   at
>
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058)
>   at
>
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050)
>   at
>
> org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947)
>   at java.lang.Thread.run(Thread.java:662)
>
>   17.03.2011 22:38:01
>   org.springframework.jms.listener.DefaultMessageListenerContainer
>   handleListenerSetupFailure
>   WARNUNG: Setup of JMS message listener invoker failed for
>   destination 'OrderQueue' - trying to recover. Cause: Error in proxy;
>   nested exception is java.lang.IllegalStateException:
>   XATransactionResource already closed
>
>



-- 
Claus Ibsen
-----------------
FuseSource
Email: cibsen@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/