[
http://jira.jboss.com/jira/browse/JGRP-532?page=comments#action_12365508 ]
Bela Ban commented on JGRP-532:
-------------------------------
Fact is that TCP hangs when we don't pull off data of the socket, the hanging receiver
is:
"ConnectionTable.Connection.Receiver [192.168.0.5:7801 - 192.168.0.5:58328]"
daemon prio=10 tid=0x00002aaacb666000 nid=0x1682 waiting for monitor entry
[0x00000000400e4000..0x00000000400e4a10]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.jgroups.protocols.pbcast.NAKACK.handleMessage(NAKACK.java:710)
- waiting to lock <0x00002aaac68dbcd0> (a
org.jgroups.stack.NakReceiverWindow)
at org.jgroups.protocols.pbcast.NAKACK.up(NAKACK.java:546)
at org.jgroups.protocols.BARRIER.up(BARRIER.java:122)
at org.jgroups.protocols.VERIFY_SUSPECT.up(VERIFY_SUSPECT.java:154)
at org.jgroups.protocols.FD.up(FD.java:328)
at org.jgroups.protocols.FD_SOCK.up(FD_SOCK.java:298)
at org.jgroups.protocols.MERGE2.up(MERGE2.java:145)
at org.jgroups.protocols.Discovery.up(Discovery.java:220)
at org.jgroups.protocols.MPING.up(MPING.java:151)
at org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1542)
at org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1491)
at
java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.rejectedExecution(ThreadPoolExecutor.java:1737)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:658)
at org.jgroups.protocols.TP.dispatchToThreadPool(TP.java:1041)
at org.jgroups.protocols.TP.receive(TP.java:1012)
at org.jgroups.protocols.BasicTCP.receive(BasicTCP.java:233)
at org.jgroups.blocks.BasicConnectionTable.receive(BasicConnectionTable.java:162)
at
org.jgroups.blocks.BasicConnectionTable$Connection.run(BasicConnectionTable.java:606)
at java.lang.Thread.run(Thread.java:619)
This is due to the fact that the rejection policy was "Run", so the current
thread will actually attempt to deliver the message itself. This is bad, as it can hang
and therefore not receive any more data off of the socket, which causes the sender to
block.
A simple change of the rejection policy to "Discard" should do the job, never
blocking the receiving thread
TCP: hangs without FC
---------------------
Key: JGRP-532
URL:
http://jira.jboss.com/jira/browse/JGRP-532
Project: JGroups
Issue Type: Bug
Reporter: Bela Ban
Assigned To: Bela Ban
Fix For: 2.5
Attachments: config.txt, tcp.xml, tmp.txt
Usually, FC is enabled, but when FC is not present, perf.Test with 2 senders and the
attached tcp.xml/config.txt hangs. Stack trace attached too.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira