"Unresponsive EPR: JMSEpr" with ResponseTimeoutException in JBoss ESB

Solution Verified - Updated -

Issue

  • A strange behaviour has been witnessed out of ServiceInvoker that invocations to ServiceInvoker#deliverSync(message, timeout) seem to time out in about 10 seconds even though the timeout argument is set to 5 minutes (= 300000). It occurs occasionally in production system and only at invocations to a specific JMS EPR.
  • As a result, it throws "Unresponsive EPR: JMSEpr" errors followed by ResponseTimeoutException. Here is the error stacktrace:
2012-07-31 18:09:42,238 DEBUG [org.jboss.soa.esb.client.ServiceInvoker] (pool-134-thread-2112) EPR=JMSEpr [ ... ] XML=...
2012-07-31 18:09:42,238 DEBUG [org.jboss.soa.esb.client.ServiceInvoker] (pool-134-thread-2112) EPR=JMSEpr [ ... ] XML=...
2012-07-31 18:09:50,697 INFO  [org.jboss.soa.esb.client.ServiceInvoker] (pool-134-thread-2112) Unresponsive EPR: JMSEpr [ ... ] for message: header: [  ]
2012-07-31 18:09:50,697 WARN  [com.mycompany.esb.utils.SecuredServiceInvoker] (pool-134-thread-2112) org.jboss.soa.esb.listeners.message.ResponseTimeoutException: No response received for service [CommonDomain:ServiceDispatcher], Told not to retry.
org.jboss.soa.esb.listeners.message.ResponseTimeoutException: No response received for service [CommonDomain:ServiceDispatcher], Told not to retry.
at org.jboss.soa.esb.client.ServiceInvoker.post(ServiceInvoker.java:400)
at org.jboss.soa.esb.client.ServiceInvoker.deliverSync(ServiceInvoker.java:219)
at com.mycompany.esb.utils.SecuredServiceInvoker.call(SecuredServiceInvoker.java:114)
at com.mycompany.esb.utils.SecuredServiceInvoker.call(SecuredServiceInvoker.java:18)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
2012-07-31 18:09:50,707 ERROR [com.mycompany.esb.services.riskDomain.consultRisk.ConsultRiskAction] (pool-47-thread-5) org.jboss.soa.esb.listeners.message.ResponseTimeoutException: No response received for service [CommonDomain:ServiceDispatcher], Told not to retry.
com.mycompany.esb.services.common.ServiceException: org.jboss.soa.esb.listeners.message.ResponseTimeoutException: No response received for service [CommonDomain:ServiceDispatcher], Told not to retry.
at com.mycompany.esb.utils.SecuredServiceInvoker.deliverSync(SecuredServiceInvoker.java:59)
at com.mycompany.esb.utils.SecuredServiceInvoker.deliverSync(SecuredServiceInvoker.java:80)
at com.mycompany.esb.services.riskDomain.consultRisk.ConsultRiskAction.invokeConsultSNEF(ConsultRiskAction.java:467)
at com.mycompany.esb.services.riskDomain.consultRisk.ConsultRiskAction.fetchSnefResult(ConsultRiskAction.java:269)
at com.mycompany.esb.services.riskDomain.consultRisk.ConsultRiskAction.process(ConsultRiskAction.java:130)
at sun.reflect.GeneratedMethodAccessor1692.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.soa.esb.listeners.message.ActionProcessorMethodInfo.processMethods(ActionProcessorMethodInfo.java:102)
at org.jboss.soa.esb.listeners.message.OverriddenActionLifecycleProcessor.process(OverriddenActionLifecycleProcessor.java:74)
at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:649)
at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.access$000(ActionProcessingPipeline.java:84)
at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline$1.run(ActionProcessingPipeline.java:1021)
at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline$1.run(ActionProcessingPipeline.java:1018)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:454)
at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:588)
at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.process(ActionProcessingPipeline.java:433)
at org.jboss.soa.esb.listeners.message.MessageAwareListener$TransactionalRunner.run(MessageAwareListener.java:550)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
Caused by: org.jboss.soa.esb.listeners.message.ResponseTimeoutException: No response received for service [CommonDomain:ServiceDispatcher], Told not to retry.
at org.jboss.soa.esb.client.ServiceInvoker.post(ServiceInvoker.java:400)
at org.jboss.soa.esb.client.ServiceInvoker.deliverSync(ServiceInvoker.java:219)
at com.mycompany.esb.utils.SecuredServiceInvoker.call(SecuredServiceInvoker.java:114)
at com.mycompany.esb.utils.SecuredServiceInvoker.call(SecuredServiceInvoker.java:18)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
... 3 more
  • Note that occurrence of "Told not to retry" is also seen in the log; it is because the property org.jboss.soa.esb.exceptionOnDeliverFailure has been purposely set to true for a reason, so it is important to get rid of this "Unresponsive EPR" in the first place.
  • Another thing to note is that the org.jboss.soa.esb.exceptionOnDeliverFailure property is set to true in jbossesb-properties.xml or on an individual ESB message.

Environment

  • JBoss Enterprise SOA Platform (SOA-P)
    • 5.x
  • JBoss Messaging (JBM)

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content