Uploaded image for project: 'ActiveMQ Classic'
  1. ActiveMQ Classic
  2. AMQ-1863

org.apache.activemq.transport.InactivityIOException: Channel was inactive for too long

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 4.0.2
    • 5.1.0
    • Broker
    • None
    • RedHat Linux

    Description

      I have web client which uses jetty configured through servicemix which intermittently throws an activemq.transport.InactivityIOException. The problem is reported in a solaris environment and I have been able to reproduce this issue with Redhat Linux AdvancedServer 2.1 after an extended period of no web client activity for about 2 days.

      I have tried setting maxInactivityDuration = 0 (at the web client end) and have also tried applying the patch (changes to Transport.InactivityMonitor.java) mentioned in AMQ-1146 to 4.0.2 but the issue still occurs.

      It appears that this issue has been ongoing as there are similar issues resolved in 5.1.

      Is this issue resolved in 4.1 or must I upgrade to 5.1 to resolve this issue?

      Below is exception message from the servicemix.log and the activemq.xml confguration file is attached.

      15:25:19,414 | WARN | btpool0-10922 | jetty | ervicemix.http.jetty.JCLLogger 93 | /ecli/:
      java.lang.Exception: org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; nested exception is org.apache.activemq.ConnectionFailedException: The JMS connection has failed: Channel was inactive for too long.; nested exception is org.apache.activemq.transport.InactivityIOException: Channel was inactive for too long.
      at org.apache.servicemix.http.processors.ConsumerProcessor.process(ConsumerProcessor.java:202)
      at org.apache.servicemix.http.HttpBridgeServlet.doPost(HttpBridgeServlet.java:71)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
      at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:443)
      at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:356)
      at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:179)
      at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:615)
      at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
      at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
      at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
      at org.mortbay.jetty.Server.handle(Server.java:269)
      at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
      at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:333)
      at org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
      at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
      Caused by: org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; nested exception is org.apache.activemq.ConnectionFailedException: The JMS connection has failed: Channel was inactive for too long.; nested exception is org.apache.activemq.transport.InactivityIOException: Channel was inactive for too long.
      at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:194)
      at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:162)
      at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:432)
      at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:485)
      at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:471)
      at org.apache.servicemix.components.jms.JmsSenderComponent.process(JmsSenderComponent.java:81)
      at org.apache.servicemix.components.util.OutBinding.onMessageExchange(OutBinding.java:49)
      at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:624)
      at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:169)
      at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:177)
      at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:227)
      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(Unknown Source)
      Caused by: org.apache.activemq.ConnectionFailedException: The JMS connection has failed: Channel was inactive for too long.
      at org.apache.activemq.ActiveMQConnection.checkClosedOrFailed(ActiveMQConnection.java:1171)
      at org.apache.activemq.ActiveMQConnection.createSession(ActiveMQConnection.java:270)
      at org.apache.activemq.pool.SessionPool.createSession(SessionPool.java:112)
      at org.apache.activemq.pool.SessionPool.makeObject(SessionPool.java:80)
      at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:771)
      at org.apache.activemq.pool.SessionPool.borrowSession(SessionPool.java:55)
      at org.apache.activemq.pool.ConnectionPool.createSession(ConnectionPool.java:70)
      at org.apache.activemq.pool.PooledConnection.createSession(PooledConnection.java:129)
      at org.springframework.jms.core.JmsTemplate.createSession(JmsTemplate.java:826)
      at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:420)
      ... 11 more
      Caused by: org.apache.activemq.transport.InactivityIOException: Channel was inactive for too long.
      at org.apache.activemq.transport.InactivityMonitor.readCheck(InactivityMonitor.java:101)
      at org.apache.activemq.transport.InactivityMonitor.access$000(InactivityMonitor.java:35)
      at org.apache.activemq.transport.InactivityMonitor$1.run(InactivityMonitor.java:51)
      at edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:431)
      at edu.emory.mathcs.backport.java.util.concurrent.FutureTask.runAndReset(FutureTask.java:198)
      at edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:189)
      at edu.emory.mathcs.backport.java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:213)
      at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
      at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
      ... 1 more

      Attachments

        Activity

          People

            rajdavies Robert Davies
            dingratta don ingratta
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: