[
https://issues.jboss.org/browse/JBMESSAGING-1883?page=com.atlassian.jira....
]
Yong Hao Gao commented on JBMESSAGING-1883:
-------------------------------------------
The fix:
Add a state flag to the Closer object. If the Closer is added to executor that is already
shut down, set the flag. In waitForOnMessageToComplete() it checks the flag, if the flag
is set then don't wait for it.
Server side failover may cause
ClientConsumer.waitForOnMessageToComplete() to hang
----------------------------------------------------------------------------------
Key: JBMESSAGING-1883
URL:
https://issues.jboss.org/browse/JBMESSAGING-1883
Project: JBoss Messaging
Issue Type: Bug
Components: JMS Clustering
Affects Versions: 1.4.0.SP3.CP13, 1.4.8.SP1
Reporter: Yong Hao Gao
Assignee: Yong Hao Gao
Fix For: 1.4.0.SP3.CP14, 1.4.8.SP2
When server side failover happens, the failover node will get "node left"
notification from jgroups as well as "connection broken" notification from
remoting on the connections through which message suckers are created. The listeners of
the two notifications are executed concurrently and both try to close related resources.
The "node left" listener performs failover for the dead node, where it closes
all message suckers (underneath the ClientConsumers). The "connection broken"
listener will close the related connection/session/consumer. If
1. in failover the ClientConsumer.close() is called but before
waitForOnMessageToComplete() is called,
2. the session is being closed by the 'connection broken' listener.
3. when the waitForOnMessageToComplete() is called, it puts a 'Closer' task to
executor and wait for it. However at that time the executor has been closed already in
step 2. So the 'Closer' task will never get executed and it will wait forever.
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira