[
http://jira.jboss.com/jira/browse/JGRP-610?page=comments#action_12385326 ]
Bela Ban commented on JGRP-610:
-------------------------------
Detailed explanation:
- A unicast is received. This acquires a (sender-based) lockin UNICAST on its way up
- When the message is received, the RpcDispatcher sends the large return value back *on
the same thread* (the lock in UNICAST is not released)
- FRAG2 splits the return message into many smaller messages
- All messages are sent down, but when max_credits is exceeded, FC.down() blocks. This
means the lock in UNICAST is *still* not released
- On the receiver side (sender == receiver), incoming calls cannot reach FC due to the
lock in UNICAST (because FC is somewhere above
UNICAST), therefore FC will not send new credits (via OOB) to unblock the sender
- The only way credits will be received is for the sender to periodically (max_block_time
ms) send an OOB credit request and unblock when it
receives the credit response
- However, even OOB messages will not get processed when the default thread pool in TP has
the queue *disabled* and all threads are *busy* !
Problems with large return value and FC
---------------------------------------
Key: JGRP-610
URL:
http://jira.jboss.com/jira/browse/JGRP-610
Project: JGroups
Issue Type: Bug
Reporter: Bela Ban
Assigned To: Bela Ban
Fix For: 2.6
When sending a return value whose size is larger than FC.max_credits, the call hangs.
Unit test RpcDispatcher.testLargeReturnValueUnicastCall() reproduces the issue.
--
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