"Unresponsive EPR: JMSEpr" with ResponseTimeoutException in JBoss ESB
Issue
- A strange behaviour has been witnessed out of
ServiceInvoker
that invocations toServiceInvoker#deliverSync(message, timeout)
seem to time out in about 10 seconds even though thetimeout
argument 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.exceptionOnDeliverFailure
has been purposely set totrue
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 totrue
injbossesb-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.