Expiring keep-alive connections can cause thread hangs
------------------------------------------------------
Key: SYNAPSE-470
URL: https://issues.apache.org/jira/browse/SYNAPSE-470
Project: Synapse
Issue Type: Bug
Components: Transports
Affects Versions: 1.2
Reporter: Eric Hubert
Assignee: Asankha C. Perera
Fix For: 1.3
The last entries in the logs before a hang are:
[HttpClientWorker-369] ERROR ServerHandler IO error submiting response :
Connection is closed
[HttpClientWorker-362] ERROR ServerHandler IO error submiting response :
Connection is closed
Here are the suspicious entries from the thread dumps. When I get a bunch of
thread dumps during normal operations, I could never find those entries in it.
No matter how often I tried. But these entries seem to be a pattern. They have
a server worker waiting at the same position in the code. They are waiting of a
notification (from a ClientHandler?).
Additionally on another node a client worker was also waiting for a
notification.
Here are the details from the dump:
"HttpServerWorker-5" prio=1 tid=0xa8b9d670 nid=0x2b4d in Object.wait()
[0xa56fe000..0xa56ff160]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:474)
at
org.apache.synapse.transport.nhttp.Axis2HttpRequest.streamMessageContents(Axis2HttpRequest.java:213)
"HttpServerWorker-14" prio=1 tid=0x0840b6c0 nid=0x4194 in Object.wait()
[0xa577e000..0xa577efe0]
at java.lang.Object.wait(Native Method)
- waiting on <0xea555cf8> (a
org.apache.synapse.transport.nhttp.Axis2HttpRequest)
at java.lang.Object.wait(Object.java:474)
at
org.apache.synapse.transport.nhttp.Axis2HttpRequest.streamMessageContents(Axis2HttpRequest.java:213)
"HttpClientWorker-62" prio=1 tid=0xa89d03a8 nid=0x7c14 in Object.wait()
[0xa4ffe000..0xa4fff0e0]
at java.lang.Object.wait(Native Method)
- waiting on <0xb1d0da00> (a java.lang.Object)
at java.lang.Object.wait(Object.java:474)
at
org.apache.http.nio.util.SharedOutputBuffer.flushContent(SharedOutputBuffer.java:161)
Another thing I noticed and don't know whether this is normal or not is the
number at the end of the Client-Worker Threads. While ServerWorker stay at -1
till -20. ClientWorker increase up to around -400. The total number is only
about 20 each. So it looks to me as if ClientWorker Threads somehow die and get
newly created.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]