"Unresponsive EPR: JMSEpr" with ResponseTimeoutException in JBoss ESB
Issue
- A strange behaviour has been witnessed out of
ServiceInvokerthat invocations toServiceInvoker#deliverSync(message, timeout)seem to time out in about 10 seconds even though thetimeoutargument is set to 5 minutes (=300000). It occurs occasionally in production system and only at invocations to a specificJMS EPR. - As a result, it throws
"Unresponsive EPR: JMSEpr"errors followed byResponseTimeoutException. 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 propertyorg.jboss.soa.esb.exceptionOnDeliverFailurehas been purposely set totruefor 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.exceptionOnDeliverFailureproperty is set totrueinjbossesb-properties.xmlor 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 of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
