[jboss-jira] [JBoss JIRA] (WFLY-9482) ejb remote client hangs on undertow default worker pool exhaustion

Igor Vagulin (JIRA) issues at jboss.org
Wed Oct 25 11:55:00 EDT 2017


     [ https://issues.jboss.org/browse/WFLY-9482?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Igor Vagulin updated WFLY-9482:
-------------------------------
    Steps to Reproduce: 
>Steps to reproduce
- get 2 jboss instances: destination and client
- setup ejb-remoting according to article "https://docs.jboss.org/author/display/WFLY10/EJB+invocations+from+a+remote+server+instance"
- install to destination .ear with remotely accessible slsb, doing Thread.sleep(1000)
- install to client .war with servlet calling method
- make lot (>300) of  concurrent get request to servlet using some bench tool (e.g. https://github.com/wg/wrk)

>Actual results
Servlet hang, all threads waiting for responses like this:


{code:java}

"default task-40" #331 prio=5 os_prio=0 tid=0x00007f2d7c256800 nid=0x1bf6 in Object.wait() [0x00007f2ca2db2000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:502)
	at org.jboss.ejb.client.EJBClientInvocationContext.awaitResponse(EJBClientInvocationContext.java:413)
	locked <0x00000000d6253958> (a java.lang.Object)
	at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:204)
	at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:183)
	at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:146)
	at com.sun.proxy.$Proxy253.process(Unknown Source)

{code}


> Expected result:
No hang

> Additional info

AFAICU ejb-client need spare thread in default xnio worker to process responses. all threads occupied by processing of servlet requests. No thread to make following


{noformat}
EJBClientInvocationContext.resultReady(EJBReceiverInvocationContext$ResultProducer) line: 313	
EJBReceiverInvocationContext.resultReady(EJBReceiverInvocationContext$ResultProducer) line: 73	
ChannelAssociation.resultReady(short, EJBReceiverInvocationContext$ResultProducer) line: 241	
MethodInvocationResponseHandler.processMessage(InputStream) line: 82	
ChannelAssociation.processResponse(InputStream) line: 395	
ChannelAssociation$ResponseReceiver.handleMessage(Channel, MessageInputStream) line: 507	
RemoteConnectionChannel$5.run() line: 456	
EndpointImpl$TrackingExecutor$1.run() line: 731	
XnioWorker$TaskPool(ThreadPoolExecutor).runWorker(ThreadPoolExecutor$Worker) line: 1142	
ThreadPoolExecutor$Worker.run() line: 617	
Thread.run() line: 745
{noformat}


  was:
>Steps to reproduce
- get 2 jboss instances: destination and client
- setup ejb-remoting according to article "https://docs.jboss.org/author/display/WFLY10/EJB+invocations+from+a+remote+server+instance"
- install to destination .ear with remotely accessible slsb, doing Thread.sleep(1000)
- install to client .war with servlet calling method
- make lot (>300) of  concurrent get request to servlet using some bench tool (e.g. https://github.com/wg/wrk)

>Actual results
Servlet hang, all threads waiting for responses like this:

{code:java}
"default task-40" #331 prio=5 os_prio=0 tid=0x00007f2d7c256800 nid=0x1bf6 in Object.wait() [0x00007f2ca2db2000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:502)
	at org.jboss.ejb.client.EJBClientInvocationContext.awaitResponse(EJBClientInvocationContext.java:413)
	locked <0x00000000d6253958> (a java.lang.Object)
	at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:204)
	at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:183)
	at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:146)
	at com.sun.proxy.$Proxy253.process(Unknown Source)

{code}



> Expected result:
No hang

> Additional info

AFAICU ejb-client need spare thread in default xnio worker to process responses. all threads occupied by processing of servlet requests. No thread to make following
{{
EJBClientInvocationContext.resultReady(EJBReceiverInvocationContext$ResultProducer) line: 313	
EJBReceiverInvocationContext.resultReady(EJBReceiverInvocationContext$ResultProducer) line: 73	
ChannelAssociation.resultReady(short, EJBReceiverInvocationContext$ResultProducer) line: 241	
MethodInvocationResponseHandler.processMessage(InputStream) line: 82	
ChannelAssociation.processResponse(InputStream) line: 395	
ChannelAssociation$ResponseReceiver.handleMessage(Channel, MessageInputStream) line: 507	
RemoteConnectionChannel$5.run() line: 456	
EndpointImpl$TrackingExecutor$1.run() line: 731	
XnioWorker$TaskPool(ThreadPoolExecutor).runWorker(ThreadPoolExecutor$Worker) line: 1142	
ThreadPoolExecutor$Worker.run() line: 617	
Thread.run() line: 745	}}



> ejb remote client hangs on undertow default worker pool exhaustion
> ------------------------------------------------------------------
>
>                 Key: WFLY-9482
>                 URL: https://issues.jboss.org/browse/WFLY-9482
>             Project: WildFly
>          Issue Type: Bug
>          Components: Remoting
>    Affects Versions: 10.1.0.Final
>            Reporter: Igor Vagulin
>            Assignee: David Lloyd
>




--
This message was sent by Atlassian JIRA
(v7.5.0#75005)


More information about the jboss-jira mailing list