You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "david durham (JIRA)" <ji...@apache.org> on 2009/06/23 20:53:35 UTC

[jira] Created: (CAMEL-1751) Camel causes Tomcat shutdown to hang

Camel causes Tomcat shutdown to hang
------------------------------------

                 Key: CAMEL-1751
                 URL: https://issues.apache.org/activemq/browse/CAMEL-1751
             Project: Apache Camel
          Issue Type: Bug
         Environment: reproduceable on windows and linux
            Reporter: david durham


issue is that if I execute DefaultCamelContext().start(),
the tomcat shutdown process will hang.

Here's my spring config.  I have the following for 'inbound' return queues.

  <bean id="returnQueues" class="com.ReturnedQueueRouteBuilder"
lazy-init="false" init-method="init" destroy-method="stop">
      <property name="routes">
          <map>
              <entry key="${a.returnQueue.name}">
                  <bean class="com.ReturnedAProcessor">
                      <property name="x" ref="y" />
                  </bean>
              </entry>
              <entry key="${b.returnQueue.name}">
                  <bean class="com.ReturnedBProcessor">
                      <property name="x" ref="y />
                  </bean>
              </entry>
          </map>
      </property>
      <property name="camelContext" ref="camelContext" />
      <property name="activeMQName" value="${queue.activeMQInstance}" />
      <property name="remoteAddress" value="${queue.remoteAddress}" />
  </bean>

  <bean id="camelContext" class="org.apache.camel.impl.DefaultCamelContext" />

ReturnQueueRouteBuilder looks like:

public class ReturnedQueueRouteBuilder extends RouteBuilder {
   ...

  public void init() {
      camelContext.addComponent(activeMQName.trim(),
ActiveMQComponent.activeMQComponent(remoteAddress.trim()));
      try {
          camelContext.addRoutes(this);
          camelContext.start();
      } catch (Exception e) {
          log.error(e);
      }
  }

    public void stop() {
        try {
            camelContext.stop();
        } catch (Exception e) {
            log.error(e);
        }
    }

    @Override
    public void configure() throws Exception {
        for (Map.Entry<String, Processor> route : routes.entrySet()) {
            from(route.getKey()).process(route.getValue());
        }
    }


 I also see the following stack trace on tomcat shutdown, but I do not think this is directly the cause.

    Exception in thread "InactivityMonitor WriteCheck"
java.lang.NoClassDefFoundError:
org/apache/activemq/transport/InactivityMonitor$3
            at
org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:128)
            at
org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:103)
            at
org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
            at java.util.TimerThread.mainLoop(Timer.java:512)
            at java.util.TimerThread.run(Timer.java:462)
    Caused by: java.lang.ClassNotFoundException:
org.apache.activemq.transport.InactivityMonitor$3
            at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
            at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
            at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
            ... 5 more


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Issue Comment Edited: (CAMEL-1751) Camel causes Tomcat shutdown to hang

Posted by "david durham (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-1751?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=52455#action_52455 ] 

david durham edited comment on CAMEL-1751 at 6/24/09 4:00 PM:
--------------------------------------------------------------

A coworker reported that the following JNDI configuration results in a client that does not hang Tomcat:

    <Resource
      name="jms/xx/ConnectionFactory"
      auth="Container"
      type="org.apache.activemq.ActiveMQConnectionFactory"
      description="JMS Connection Factory"
      factory="org.apache.activemq.jndi.JNDIReferenceFactory"
      brokerURL="tcp://xxcom:61616?daemon=true"
      brokerName="ActiveMQBroker"/>

      was (Author: david.durham.jr@gmail.com):
    A coworker reported that the following JNDI configuration results in a client that does not hang Tomcat:

    <Resource
      name="jms/PPM4/ConnectionFactory"
      auth="Container"
      type="org.apache.activemq.ActiveMQConnectionFactory"
      description="JMS Connection Factory"
      factory="org.apache.activemq.jndi.JNDIReferenceFactory"
      brokerURL="tcp://queue.coredemo.inwk.com:61616?daemon=true"
      brokerName="ActiveMQBroker"/>
  
> Camel causes Tomcat shutdown to hang
> ------------------------------------
>
>                 Key: CAMEL-1751
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1751
>             Project: Apache Camel
>          Issue Type: Bug
>    Affects Versions: 2.0-M1
>         Environment: reproduceable on windows and linux
>            Reporter: david durham
>            Assignee: Hadrian Zbarcea
>             Fix For: 2.0.0
>
>
> issue is that if I execute DefaultCamelContext().start(),
> the tomcat shutdown process will hang.
> Here's my spring config.  I have the following for 'inbound' return queues.
>   <bean id="returnQueues" class="com.ReturnedQueueRouteBuilder"
> lazy-init="false" init-method="init" destroy-method="stop">
>       <property name="routes">
>           <map>
>               <entry key="${a.returnQueue.name}">
>                   <bean class="com.ReturnedAProcessor">
>                       <property name="x" ref="y" />
>                   </bean>
>               </entry>
>               <entry key="${b.returnQueue.name}">
>                   <bean class="com.ReturnedBProcessor">
>                       <property name="x" ref="y />
>                   </bean>
>               </entry>
>           </map>
>       </property>
>       <property name="camelContext" ref="camelContext" />
>       <property name="activeMQName" value="${queue.activeMQInstance}" />
>       <property name="remoteAddress" value="${queue.remoteAddress}" />
>   </bean>
>   <bean id="camelContext" class="org.apache.camel.impl.DefaultCamelContext" />
> ReturnQueueRouteBuilder looks like:
> public class ReturnedQueueRouteBuilder extends RouteBuilder {
>    ...
>   public void init() {
>       camelContext.addComponent(activeMQName.trim(),
> ActiveMQComponent.activeMQComponent(remoteAddress.trim()));
>       try {
>           camelContext.addRoutes(this);
>           camelContext.start();
>       } catch (Exception e) {
>           log.error(e);
>       }
>   }
>     public void stop() {
>         try {
>             camelContext.stop();
>         } catch (Exception e) {
>             log.error(e);
>         }
>     }
>     @Override
>     public void configure() throws Exception {
>         for (Map.Entry<String, Processor> route : routes.entrySet()) {
>             from(route.getKey()).process(route.getValue());
>         }
>     }
>  I also see the following stack trace on tomcat shutdown, but I do not think this is directly the cause.
>     Exception in thread "InactivityMonitor WriteCheck"
> java.lang.NoClassDefFoundError:
> org/apache/activemq/transport/InactivityMonitor$3
>             at
> org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:128)
>             at
> org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:103)
>             at
> org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
>             at java.util.TimerThread.mainLoop(Timer.java:512)
>             at java.util.TimerThread.run(Timer.java:462)
>     Caused by: java.lang.ClassNotFoundException:
> org.apache.activemq.transport.InactivityMonitor$3
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
>             at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
>             ... 5 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (CAMEL-1751) Camel causes Tomcat shutdown to hang

Posted by "Willem Jiang (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/CAMEL-1751?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Willem Jiang resolved CAMEL-1751.
---------------------------------

    Resolution: Won't Fix

> Camel causes Tomcat shutdown to hang
> ------------------------------------
>
>                 Key: CAMEL-1751
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1751
>             Project: Apache Camel
>          Issue Type: Bug
>    Affects Versions: 2.0-M1
>         Environment: reproduceable on windows and linux
>            Reporter: david durham
>            Assignee: Hadrian Zbarcea
>             Fix For: 2.0.0
>
>
> issue is that if I execute DefaultCamelContext().start(),
> the tomcat shutdown process will hang.
> Here's my spring config.  I have the following for 'inbound' return queues.
>   <bean id="returnQueues" class="com.ReturnedQueueRouteBuilder"
> lazy-init="false" init-method="init" destroy-method="stop">
>       <property name="routes">
>           <map>
>               <entry key="${a.returnQueue.name}">
>                   <bean class="com.ReturnedAProcessor">
>                       <property name="x" ref="y" />
>                   </bean>
>               </entry>
>               <entry key="${b.returnQueue.name}">
>                   <bean class="com.ReturnedBProcessor">
>                       <property name="x" ref="y />
>                   </bean>
>               </entry>
>           </map>
>       </property>
>       <property name="camelContext" ref="camelContext" />
>       <property name="activeMQName" value="${queue.activeMQInstance}" />
>       <property name="remoteAddress" value="${queue.remoteAddress}" />
>   </bean>
>   <bean id="camelContext" class="org.apache.camel.impl.DefaultCamelContext" />
> ReturnQueueRouteBuilder looks like:
> public class ReturnedQueueRouteBuilder extends RouteBuilder {
>    ...
>   public void init() {
>       camelContext.addComponent(activeMQName.trim(),
> ActiveMQComponent.activeMQComponent(remoteAddress.trim()));
>       try {
>           camelContext.addRoutes(this);
>           camelContext.start();
>       } catch (Exception e) {
>           log.error(e);
>       }
>   }
>     public void stop() {
>         try {
>             camelContext.stop();
>         } catch (Exception e) {
>             log.error(e);
>         }
>     }
>     @Override
>     public void configure() throws Exception {
>         for (Map.Entry<String, Processor> route : routes.entrySet()) {
>             from(route.getKey()).process(route.getValue());
>         }
>     }
>  I also see the following stack trace on tomcat shutdown, but I do not think this is directly the cause.
>     Exception in thread "InactivityMonitor WriteCheck"
> java.lang.NoClassDefFoundError:
> org/apache/activemq/transport/InactivityMonitor$3
>             at
> org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:128)
>             at
> org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:103)
>             at
> org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
>             at java.util.TimerThread.mainLoop(Timer.java:512)
>             at java.util.TimerThread.run(Timer.java:462)
>     Caused by: java.lang.ClassNotFoundException:
> org.apache.activemq.transport.InactivityMonitor$3
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
>             at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
>             ... 5 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Assigned: (CAMEL-1751) Camel causes Tomcat shutdown to hang

Posted by "Hadrian Zbarcea (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/CAMEL-1751?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Hadrian Zbarcea reassigned CAMEL-1751:
--------------------------------------

    Assignee: Hadrian Zbarcea

> Camel causes Tomcat shutdown to hang
> ------------------------------------
>
>                 Key: CAMEL-1751
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1751
>             Project: Apache Camel
>          Issue Type: Bug
>    Affects Versions: 2.0-M2
>         Environment: reproduceable on windows and linux
>            Reporter: david durham
>            Assignee: Hadrian Zbarcea
>
> issue is that if I execute DefaultCamelContext().start(),
> the tomcat shutdown process will hang.
> Here's my spring config.  I have the following for 'inbound' return queues.
>   <bean id="returnQueues" class="com.ReturnedQueueRouteBuilder"
> lazy-init="false" init-method="init" destroy-method="stop">
>       <property name="routes">
>           <map>
>               <entry key="${a.returnQueue.name}">
>                   <bean class="com.ReturnedAProcessor">
>                       <property name="x" ref="y" />
>                   </bean>
>               </entry>
>               <entry key="${b.returnQueue.name}">
>                   <bean class="com.ReturnedBProcessor">
>                       <property name="x" ref="y />
>                   </bean>
>               </entry>
>           </map>
>       </property>
>       <property name="camelContext" ref="camelContext" />
>       <property name="activeMQName" value="${queue.activeMQInstance}" />
>       <property name="remoteAddress" value="${queue.remoteAddress}" />
>   </bean>
>   <bean id="camelContext" class="org.apache.camel.impl.DefaultCamelContext" />
> ReturnQueueRouteBuilder looks like:
> public class ReturnedQueueRouteBuilder extends RouteBuilder {
>    ...
>   public void init() {
>       camelContext.addComponent(activeMQName.trim(),
> ActiveMQComponent.activeMQComponent(remoteAddress.trim()));
>       try {
>           camelContext.addRoutes(this);
>           camelContext.start();
>       } catch (Exception e) {
>           log.error(e);
>       }
>   }
>     public void stop() {
>         try {
>             camelContext.stop();
>         } catch (Exception e) {
>             log.error(e);
>         }
>     }
>     @Override
>     public void configure() throws Exception {
>         for (Map.Entry<String, Processor> route : routes.entrySet()) {
>             from(route.getKey()).process(route.getValue());
>         }
>     }
>  I also see the following stack trace on tomcat shutdown, but I do not think this is directly the cause.
>     Exception in thread "InactivityMonitor WriteCheck"
> java.lang.NoClassDefFoundError:
> org/apache/activemq/transport/InactivityMonitor$3
>             at
> org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:128)
>             at
> org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:103)
>             at
> org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
>             at java.util.TimerThread.mainLoop(Timer.java:512)
>             at java.util.TimerThread.run(Timer.java:462)
>     Caused by: java.lang.ClassNotFoundException:
> org.apache.activemq.transport.InactivityMonitor$3
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
>             at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
>             ... 5 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-1751) Camel causes Tomcat shutdown to hang

Posted by "david durham (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-1751?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=52474#action_52474 ] 

david durham commented on CAMEL-1751:
-------------------------------------

AMQ 5.2

> Camel causes Tomcat shutdown to hang
> ------------------------------------
>
>                 Key: CAMEL-1751
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1751
>             Project: Apache Camel
>          Issue Type: Bug
>    Affects Versions: 2.0-M1
>         Environment: reproduceable on windows and linux
>            Reporter: david durham
>            Assignee: Hadrian Zbarcea
>             Fix For: 2.0.0
>
>
> issue is that if I execute DefaultCamelContext().start(),
> the tomcat shutdown process will hang.
> Here's my spring config.  I have the following for 'inbound' return queues.
>   <bean id="returnQueues" class="com.ReturnedQueueRouteBuilder"
> lazy-init="false" init-method="init" destroy-method="stop">
>       <property name="routes">
>           <map>
>               <entry key="${a.returnQueue.name}">
>                   <bean class="com.ReturnedAProcessor">
>                       <property name="x" ref="y" />
>                   </bean>
>               </entry>
>               <entry key="${b.returnQueue.name}">
>                   <bean class="com.ReturnedBProcessor">
>                       <property name="x" ref="y />
>                   </bean>
>               </entry>
>           </map>
>       </property>
>       <property name="camelContext" ref="camelContext" />
>       <property name="activeMQName" value="${queue.activeMQInstance}" />
>       <property name="remoteAddress" value="${queue.remoteAddress}" />
>   </bean>
>   <bean id="camelContext" class="org.apache.camel.impl.DefaultCamelContext" />
> ReturnQueueRouteBuilder looks like:
> public class ReturnedQueueRouteBuilder extends RouteBuilder {
>    ...
>   public void init() {
>       camelContext.addComponent(activeMQName.trim(),
> ActiveMQComponent.activeMQComponent(remoteAddress.trim()));
>       try {
>           camelContext.addRoutes(this);
>           camelContext.start();
>       } catch (Exception e) {
>           log.error(e);
>       }
>   }
>     public void stop() {
>         try {
>             camelContext.stop();
>         } catch (Exception e) {
>             log.error(e);
>         }
>     }
>     @Override
>     public void configure() throws Exception {
>         for (Map.Entry<String, Processor> route : routes.entrySet()) {
>             from(route.getKey()).process(route.getValue());
>         }
>     }
>  I also see the following stack trace on tomcat shutdown, but I do not think this is directly the cause.
>     Exception in thread "InactivityMonitor WriteCheck"
> java.lang.NoClassDefFoundError:
> org/apache/activemq/transport/InactivityMonitor$3
>             at
> org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:128)
>             at
> org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:103)
>             at
> org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
>             at java.util.TimerThread.mainLoop(Timer.java:512)
>             at java.util.TimerThread.run(Timer.java:462)
>     Caused by: java.lang.ClassNotFoundException:
> org.apache.activemq.transport.InactivityMonitor$3
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
>             at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
>             ... 5 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-1751) Camel causes Tomcat shutdown to hang

Posted by "Willem Jiang (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-1751?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=52492#action_52492 ] 

Willem Jiang commented on CAMEL-1751:
-------------------------------------

@Tom
I just checked the code (camel trunk and camel-1.x branch), I think current released Camel2 M2 and Camel-1.6.1  don't have this issue.
In Camel 2 M2, we did some changes of the async API , and DeadLetterChannel doesn't use the Timer any more.
In Camel-1.6.1, we fixed the time deamon issue in CAMEL-1509.

Can you give the Camel 2 M2 a try ?



> Camel causes Tomcat shutdown to hang
> ------------------------------------
>
>                 Key: CAMEL-1751
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1751
>             Project: Apache Camel
>          Issue Type: Bug
>    Affects Versions: 2.0-M1
>         Environment: reproduceable on windows and linux
>            Reporter: david durham
>            Assignee: Hadrian Zbarcea
>             Fix For: 2.0.0
>
>
> issue is that if I execute DefaultCamelContext().start(),
> the tomcat shutdown process will hang.
> Here's my spring config.  I have the following for 'inbound' return queues.
>   <bean id="returnQueues" class="com.ReturnedQueueRouteBuilder"
> lazy-init="false" init-method="init" destroy-method="stop">
>       <property name="routes">
>           <map>
>               <entry key="${a.returnQueue.name}">
>                   <bean class="com.ReturnedAProcessor">
>                       <property name="x" ref="y" />
>                   </bean>
>               </entry>
>               <entry key="${b.returnQueue.name}">
>                   <bean class="com.ReturnedBProcessor">
>                       <property name="x" ref="y />
>                   </bean>
>               </entry>
>           </map>
>       </property>
>       <property name="camelContext" ref="camelContext" />
>       <property name="activeMQName" value="${queue.activeMQInstance}" />
>       <property name="remoteAddress" value="${queue.remoteAddress}" />
>   </bean>
>   <bean id="camelContext" class="org.apache.camel.impl.DefaultCamelContext" />
> ReturnQueueRouteBuilder looks like:
> public class ReturnedQueueRouteBuilder extends RouteBuilder {
>    ...
>   public void init() {
>       camelContext.addComponent(activeMQName.trim(),
> ActiveMQComponent.activeMQComponent(remoteAddress.trim()));
>       try {
>           camelContext.addRoutes(this);
>           camelContext.start();
>       } catch (Exception e) {
>           log.error(e);
>       }
>   }
>     public void stop() {
>         try {
>             camelContext.stop();
>         } catch (Exception e) {
>             log.error(e);
>         }
>     }
>     @Override
>     public void configure() throws Exception {
>         for (Map.Entry<String, Processor> route : routes.entrySet()) {
>             from(route.getKey()).process(route.getValue());
>         }
>     }
>  I also see the following stack trace on tomcat shutdown, but I do not think this is directly the cause.
>     Exception in thread "InactivityMonitor WriteCheck"
> java.lang.NoClassDefFoundError:
> org/apache/activemq/transport/InactivityMonitor$3
>             at
> org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:128)
>             at
> org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:103)
>             at
> org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
>             at java.util.TimerThread.mainLoop(Timer.java:512)
>             at java.util.TimerThread.run(Timer.java:462)
>     Caused by: java.lang.ClassNotFoundException:
> org.apache.activemq.transport.InactivityMonitor$3
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
>             at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
>             ... 5 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-1751) Camel causes Tomcat shutdown to hang

Posted by "Tom Wilczak (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-1751?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=52491#action_52491 ] 

Tom Wilczak commented on CAMEL-1751:
------------------------------------

Update: if we add daemon=true to the remote broker url, this allows most of the threads that were causing tomcat to hang to be shutdown gracefully. 

However there is still one timer thread created at line 51 of org.apache.camel.processor.DeadLetterChannel that this parameter does not affect. 

I believe initializing this timer with isDaemon=true would resolve the hang, but I do not know what else would be impacted by this change. 

> Camel causes Tomcat shutdown to hang
> ------------------------------------
>
>                 Key: CAMEL-1751
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1751
>             Project: Apache Camel
>          Issue Type: Bug
>    Affects Versions: 2.0-M1
>         Environment: reproduceable on windows and linux
>            Reporter: david durham
>            Assignee: Hadrian Zbarcea
>             Fix For: 2.0.0
>
>
> issue is that if I execute DefaultCamelContext().start(),
> the tomcat shutdown process will hang.
> Here's my spring config.  I have the following for 'inbound' return queues.
>   <bean id="returnQueues" class="com.ReturnedQueueRouteBuilder"
> lazy-init="false" init-method="init" destroy-method="stop">
>       <property name="routes">
>           <map>
>               <entry key="${a.returnQueue.name}">
>                   <bean class="com.ReturnedAProcessor">
>                       <property name="x" ref="y" />
>                   </bean>
>               </entry>
>               <entry key="${b.returnQueue.name}">
>                   <bean class="com.ReturnedBProcessor">
>                       <property name="x" ref="y />
>                   </bean>
>               </entry>
>           </map>
>       </property>
>       <property name="camelContext" ref="camelContext" />
>       <property name="activeMQName" value="${queue.activeMQInstance}" />
>       <property name="remoteAddress" value="${queue.remoteAddress}" />
>   </bean>
>   <bean id="camelContext" class="org.apache.camel.impl.DefaultCamelContext" />
> ReturnQueueRouteBuilder looks like:
> public class ReturnedQueueRouteBuilder extends RouteBuilder {
>    ...
>   public void init() {
>       camelContext.addComponent(activeMQName.trim(),
> ActiveMQComponent.activeMQComponent(remoteAddress.trim()));
>       try {
>           camelContext.addRoutes(this);
>           camelContext.start();
>       } catch (Exception e) {
>           log.error(e);
>       }
>   }
>     public void stop() {
>         try {
>             camelContext.stop();
>         } catch (Exception e) {
>             log.error(e);
>         }
>     }
>     @Override
>     public void configure() throws Exception {
>         for (Map.Entry<String, Processor> route : routes.entrySet()) {
>             from(route.getKey()).process(route.getValue());
>         }
>     }
>  I also see the following stack trace on tomcat shutdown, but I do not think this is directly the cause.
>     Exception in thread "InactivityMonitor WriteCheck"
> java.lang.NoClassDefFoundError:
> org/apache/activemq/transport/InactivityMonitor$3
>             at
> org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:128)
>             at
> org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:103)
>             at
> org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
>             at java.util.TimerThread.mainLoop(Timer.java:512)
>             at java.util.TimerThread.run(Timer.java:462)
>     Caused by: java.lang.ClassNotFoundException:
> org.apache.activemq.transport.InactivityMonitor$3
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
>             at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
>             ... 5 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-1751) Camel causes Tomcat shutdown to hang

Posted by "Claus Ibsen (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-1751?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=52460#action_52460 ] 

Claus Ibsen commented on CAMEL-1751:
------------------------------------

Hadrian do you get reported to AMQ about that Timer thread they should track down and change it to be a deamon thread.

And David which version of AMQ are you using?

> Camel causes Tomcat shutdown to hang
> ------------------------------------
>
>                 Key: CAMEL-1751
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1751
>             Project: Apache Camel
>          Issue Type: Bug
>    Affects Versions: 2.0-M1
>         Environment: reproduceable on windows and linux
>            Reporter: david durham
>            Assignee: Hadrian Zbarcea
>             Fix For: 2.0.0
>
>
> issue is that if I execute DefaultCamelContext().start(),
> the tomcat shutdown process will hang.
> Here's my spring config.  I have the following for 'inbound' return queues.
>   <bean id="returnQueues" class="com.ReturnedQueueRouteBuilder"
> lazy-init="false" init-method="init" destroy-method="stop">
>       <property name="routes">
>           <map>
>               <entry key="${a.returnQueue.name}">
>                   <bean class="com.ReturnedAProcessor">
>                       <property name="x" ref="y" />
>                   </bean>
>               </entry>
>               <entry key="${b.returnQueue.name}">
>                   <bean class="com.ReturnedBProcessor">
>                       <property name="x" ref="y />
>                   </bean>
>               </entry>
>           </map>
>       </property>
>       <property name="camelContext" ref="camelContext" />
>       <property name="activeMQName" value="${queue.activeMQInstance}" />
>       <property name="remoteAddress" value="${queue.remoteAddress}" />
>   </bean>
>   <bean id="camelContext" class="org.apache.camel.impl.DefaultCamelContext" />
> ReturnQueueRouteBuilder looks like:
> public class ReturnedQueueRouteBuilder extends RouteBuilder {
>    ...
>   public void init() {
>       camelContext.addComponent(activeMQName.trim(),
> ActiveMQComponent.activeMQComponent(remoteAddress.trim()));
>       try {
>           camelContext.addRoutes(this);
>           camelContext.start();
>       } catch (Exception e) {
>           log.error(e);
>       }
>   }
>     public void stop() {
>         try {
>             camelContext.stop();
>         } catch (Exception e) {
>             log.error(e);
>         }
>     }
>     @Override
>     public void configure() throws Exception {
>         for (Map.Entry<String, Processor> route : routes.entrySet()) {
>             from(route.getKey()).process(route.getValue());
>         }
>     }
>  I also see the following stack trace on tomcat shutdown, but I do not think this is directly the cause.
>     Exception in thread "InactivityMonitor WriteCheck"
> java.lang.NoClassDefFoundError:
> org/apache/activemq/transport/InactivityMonitor$3
>             at
> org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:128)
>             at
> org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:103)
>             at
> org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
>             at java.util.TimerThread.mainLoop(Timer.java:512)
>             at java.util.TimerThread.run(Timer.java:462)
>     Caused by: java.lang.ClassNotFoundException:
> org.apache.activemq.transport.InactivityMonitor$3
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
>             at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
>             ... 5 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CAMEL-1751) Camel causes Tomcat shutdown to hang

Posted by "Hadrian Zbarcea (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/CAMEL-1751?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Hadrian Zbarcea updated CAMEL-1751:
-----------------------------------

    Affects Version/s:     (was: 2.0-M2)
                       2.0-M1
        Fix Version/s: 2.0.0

> Camel causes Tomcat shutdown to hang
> ------------------------------------
>
>                 Key: CAMEL-1751
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1751
>             Project: Apache Camel
>          Issue Type: Bug
>    Affects Versions: 2.0-M1
>         Environment: reproduceable on windows and linux
>            Reporter: david durham
>            Assignee: Hadrian Zbarcea
>             Fix For: 2.0.0
>
>
> issue is that if I execute DefaultCamelContext().start(),
> the tomcat shutdown process will hang.
> Here's my spring config.  I have the following for 'inbound' return queues.
>   <bean id="returnQueues" class="com.ReturnedQueueRouteBuilder"
> lazy-init="false" init-method="init" destroy-method="stop">
>       <property name="routes">
>           <map>
>               <entry key="${a.returnQueue.name}">
>                   <bean class="com.ReturnedAProcessor">
>                       <property name="x" ref="y" />
>                   </bean>
>               </entry>
>               <entry key="${b.returnQueue.name}">
>                   <bean class="com.ReturnedBProcessor">
>                       <property name="x" ref="y />
>                   </bean>
>               </entry>
>           </map>
>       </property>
>       <property name="camelContext" ref="camelContext" />
>       <property name="activeMQName" value="${queue.activeMQInstance}" />
>       <property name="remoteAddress" value="${queue.remoteAddress}" />
>   </bean>
>   <bean id="camelContext" class="org.apache.camel.impl.DefaultCamelContext" />
> ReturnQueueRouteBuilder looks like:
> public class ReturnedQueueRouteBuilder extends RouteBuilder {
>    ...
>   public void init() {
>       camelContext.addComponent(activeMQName.trim(),
> ActiveMQComponent.activeMQComponent(remoteAddress.trim()));
>       try {
>           camelContext.addRoutes(this);
>           camelContext.start();
>       } catch (Exception e) {
>           log.error(e);
>       }
>   }
>     public void stop() {
>         try {
>             camelContext.stop();
>         } catch (Exception e) {
>             log.error(e);
>         }
>     }
>     @Override
>     public void configure() throws Exception {
>         for (Map.Entry<String, Processor> route : routes.entrySet()) {
>             from(route.getKey()).process(route.getValue());
>         }
>     }
>  I also see the following stack trace on tomcat shutdown, but I do not think this is directly the cause.
>     Exception in thread "InactivityMonitor WriteCheck"
> java.lang.NoClassDefFoundError:
> org/apache/activemq/transport/InactivityMonitor$3
>             at
> org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:128)
>             at
> org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:103)
>             at
> org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
>             at java.util.TimerThread.mainLoop(Timer.java:512)
>             at java.util.TimerThread.run(Timer.java:462)
>     Caused by: java.lang.ClassNotFoundException:
> org.apache.activemq.transport.InactivityMonitor$3
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
>             at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
>             ... 5 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-1751) Camel causes Tomcat shutdown to hang

Posted by "Hadrian Zbarcea (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-1751?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=52422#action_52422 ] 

Hadrian Zbarcea commented on CAMEL-1751:
----------------------------------------

David reported on irc, that the issue is with a leftover Timer thread in AMQ and the dirty hack below solved it.  We should correct this and make sure AMQ stops properly.  David, thanks for spotting the issue and providing the basis for the solution.


{code}
    public void stop() {
        try {
                        camelContext.stop();
			ThreadGroup group = Thread.currentThread().getThreadGroup();
			Thread[] threads = new Thread[group.activeCount()];
			group.enumerate( threads );
			for ( Thread thread : threads ) {
				if ( thread.getName().contains( "ActiveMQ" ) || thread.getName().contains( "Timer" ) ) {
					thread.stop();
				}
			}
        } catch (Exception e) {
            log.error(e);
        }
{code}

> Camel causes Tomcat shutdown to hang
> ------------------------------------
>
>                 Key: CAMEL-1751
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1751
>             Project: Apache Camel
>          Issue Type: Bug
>    Affects Versions: 2.0-M1
>         Environment: reproduceable on windows and linux
>            Reporter: david durham
>            Assignee: Hadrian Zbarcea
>             Fix For: 2.0.0
>
>
> issue is that if I execute DefaultCamelContext().start(),
> the tomcat shutdown process will hang.
> Here's my spring config.  I have the following for 'inbound' return queues.
>   <bean id="returnQueues" class="com.ReturnedQueueRouteBuilder"
> lazy-init="false" init-method="init" destroy-method="stop">
>       <property name="routes">
>           <map>
>               <entry key="${a.returnQueue.name}">
>                   <bean class="com.ReturnedAProcessor">
>                       <property name="x" ref="y" />
>                   </bean>
>               </entry>
>               <entry key="${b.returnQueue.name}">
>                   <bean class="com.ReturnedBProcessor">
>                       <property name="x" ref="y />
>                   </bean>
>               </entry>
>           </map>
>       </property>
>       <property name="camelContext" ref="camelContext" />
>       <property name="activeMQName" value="${queue.activeMQInstance}" />
>       <property name="remoteAddress" value="${queue.remoteAddress}" />
>   </bean>
>   <bean id="camelContext" class="org.apache.camel.impl.DefaultCamelContext" />
> ReturnQueueRouteBuilder looks like:
> public class ReturnedQueueRouteBuilder extends RouteBuilder {
>    ...
>   public void init() {
>       camelContext.addComponent(activeMQName.trim(),
> ActiveMQComponent.activeMQComponent(remoteAddress.trim()));
>       try {
>           camelContext.addRoutes(this);
>           camelContext.start();
>       } catch (Exception e) {
>           log.error(e);
>       }
>   }
>     public void stop() {
>         try {
>             camelContext.stop();
>         } catch (Exception e) {
>             log.error(e);
>         }
>     }
>     @Override
>     public void configure() throws Exception {
>         for (Map.Entry<String, Processor> route : routes.entrySet()) {
>             from(route.getKey()).process(route.getValue());
>         }
>     }
>  I also see the following stack trace on tomcat shutdown, but I do not think this is directly the cause.
>     Exception in thread "InactivityMonitor WriteCheck"
> java.lang.NoClassDefFoundError:
> org/apache/activemq/transport/InactivityMonitor$3
>             at
> org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:128)
>             at
> org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:103)
>             at
> org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
>             at java.util.TimerThread.mainLoop(Timer.java:512)
>             at java.util.TimerThread.run(Timer.java:462)
>     Caused by: java.lang.ClassNotFoundException:
> org.apache.activemq.transport.InactivityMonitor$3
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
>             at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
>             ... 5 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CAMEL-1751) Camel causes Tomcat shutdown to hang

Posted by "Hadrian Zbarcea (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/CAMEL-1751?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Hadrian Zbarcea updated CAMEL-1751:
-----------------------------------

    Affects Version/s: 2.0-M2

> Camel causes Tomcat shutdown to hang
> ------------------------------------
>
>                 Key: CAMEL-1751
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1751
>             Project: Apache Camel
>          Issue Type: Bug
>    Affects Versions: 2.0-M2
>         Environment: reproduceable on windows and linux
>            Reporter: david durham
>            Assignee: Hadrian Zbarcea
>
> issue is that if I execute DefaultCamelContext().start(),
> the tomcat shutdown process will hang.
> Here's my spring config.  I have the following for 'inbound' return queues.
>   <bean id="returnQueues" class="com.ReturnedQueueRouteBuilder"
> lazy-init="false" init-method="init" destroy-method="stop">
>       <property name="routes">
>           <map>
>               <entry key="${a.returnQueue.name}">
>                   <bean class="com.ReturnedAProcessor">
>                       <property name="x" ref="y" />
>                   </bean>
>               </entry>
>               <entry key="${b.returnQueue.name}">
>                   <bean class="com.ReturnedBProcessor">
>                       <property name="x" ref="y />
>                   </bean>
>               </entry>
>           </map>
>       </property>
>       <property name="camelContext" ref="camelContext" />
>       <property name="activeMQName" value="${queue.activeMQInstance}" />
>       <property name="remoteAddress" value="${queue.remoteAddress}" />
>   </bean>
>   <bean id="camelContext" class="org.apache.camel.impl.DefaultCamelContext" />
> ReturnQueueRouteBuilder looks like:
> public class ReturnedQueueRouteBuilder extends RouteBuilder {
>    ...
>   public void init() {
>       camelContext.addComponent(activeMQName.trim(),
> ActiveMQComponent.activeMQComponent(remoteAddress.trim()));
>       try {
>           camelContext.addRoutes(this);
>           camelContext.start();
>       } catch (Exception e) {
>           log.error(e);
>       }
>   }
>     public void stop() {
>         try {
>             camelContext.stop();
>         } catch (Exception e) {
>             log.error(e);
>         }
>     }
>     @Override
>     public void configure() throws Exception {
>         for (Map.Entry<String, Processor> route : routes.entrySet()) {
>             from(route.getKey()).process(route.getValue());
>         }
>     }
>  I also see the following stack trace on tomcat shutdown, but I do not think this is directly the cause.
>     Exception in thread "InactivityMonitor WriteCheck"
> java.lang.NoClassDefFoundError:
> org/apache/activemq/transport/InactivityMonitor$3
>             at
> org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:128)
>             at
> org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:103)
>             at
> org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
>             at java.util.TimerThread.mainLoop(Timer.java:512)
>             at java.util.TimerThread.run(Timer.java:462)
>     Caused by: java.lang.ClassNotFoundException:
> org.apache.activemq.transport.InactivityMonitor$3
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
>             at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
>             ... 5 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (CAMEL-1751) Camel causes Tomcat shutdown to hang

Posted by "david durham (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/CAMEL-1751?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=52455#action_52455 ] 

david durham commented on CAMEL-1751:
-------------------------------------

A coworker reported that the following JNDI configuration results in a client that does not hang Tomcat:

    <Resource
      name="jms/PPM4/ConnectionFactory"
      auth="Container"
      type="org.apache.activemq.ActiveMQConnectionFactory"
      description="JMS Connection Factory"
      factory="org.apache.activemq.jndi.JNDIReferenceFactory"
      brokerURL="tcp://queue.coredemo.inwk.com:61616?daemon=true"
      brokerName="ActiveMQBroker"/>

> Camel causes Tomcat shutdown to hang
> ------------------------------------
>
>                 Key: CAMEL-1751
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1751
>             Project: Apache Camel
>          Issue Type: Bug
>    Affects Versions: 2.0-M1
>         Environment: reproduceable on windows and linux
>            Reporter: david durham
>            Assignee: Hadrian Zbarcea
>             Fix For: 2.0.0
>
>
> issue is that if I execute DefaultCamelContext().start(),
> the tomcat shutdown process will hang.
> Here's my spring config.  I have the following for 'inbound' return queues.
>   <bean id="returnQueues" class="com.ReturnedQueueRouteBuilder"
> lazy-init="false" init-method="init" destroy-method="stop">
>       <property name="routes">
>           <map>
>               <entry key="${a.returnQueue.name}">
>                   <bean class="com.ReturnedAProcessor">
>                       <property name="x" ref="y" />
>                   </bean>
>               </entry>
>               <entry key="${b.returnQueue.name}">
>                   <bean class="com.ReturnedBProcessor">
>                       <property name="x" ref="y />
>                   </bean>
>               </entry>
>           </map>
>       </property>
>       <property name="camelContext" ref="camelContext" />
>       <property name="activeMQName" value="${queue.activeMQInstance}" />
>       <property name="remoteAddress" value="${queue.remoteAddress}" />
>   </bean>
>   <bean id="camelContext" class="org.apache.camel.impl.DefaultCamelContext" />
> ReturnQueueRouteBuilder looks like:
> public class ReturnedQueueRouteBuilder extends RouteBuilder {
>    ...
>   public void init() {
>       camelContext.addComponent(activeMQName.trim(),
> ActiveMQComponent.activeMQComponent(remoteAddress.trim()));
>       try {
>           camelContext.addRoutes(this);
>           camelContext.start();
>       } catch (Exception e) {
>           log.error(e);
>       }
>   }
>     public void stop() {
>         try {
>             camelContext.stop();
>         } catch (Exception e) {
>             log.error(e);
>         }
>     }
>     @Override
>     public void configure() throws Exception {
>         for (Map.Entry<String, Processor> route : routes.entrySet()) {
>             from(route.getKey()).process(route.getValue());
>         }
>     }
>  I also see the following stack trace on tomcat shutdown, but I do not think this is directly the cause.
>     Exception in thread "InactivityMonitor WriteCheck"
> java.lang.NoClassDefFoundError:
> org/apache/activemq/transport/InactivityMonitor$3
>             at
> org.apache.activemq.transport.InactivityMonitor.writeCheck(InactivityMonitor.java:128)
>             at
> org.apache.activemq.transport.InactivityMonitor$2.run(InactivityMonitor.java:103)
>             at
> org.apache.activemq.thread.SchedulerTimerTask.run(SchedulerTimerTask.java:33)
>             at java.util.TimerThread.mainLoop(Timer.java:512)
>             at java.util.TimerThread.run(Timer.java:462)
>     Caused by: java.lang.ClassNotFoundException:
> org.apache.activemq.transport.InactivityMonitor$3
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
>             at
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
>             at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
>             ... 5 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.