diff options
author | Rajith Muditha Attapattu <rajith@apache.org> | 2007-08-25 15:31:30 +0000 |
---|---|---|
committer | Rajith Muditha Attapattu <rajith@apache.org> | 2007-08-25 15:31:30 +0000 |
commit | eeca08fbcf9404cb573b2f015dbfe402025acaae (patch) | |
tree | 3c818117256da33479767656a135f190a5518630 /cpp/rubygen | |
parent | aa0c3083fcb4ddb93d3ef39452005715673f1c8d (diff) | |
download | qpid-python-eeca08fbcf9404cb573b2f015dbfe402025acaae.tar.gz |
I provided a fixed to the deadlock issue in MessageConsumerImpl.
Here is the deadlock issue
---------------------------
The internal receive thread acquires the _incomingMessageLock and blocks on sync()
The MINA thread gets on to onMessage() and blocks while trying to acquire the incomingMessageLock
Since the MINA thread doesn't return it can't process the execution.complete() sent by the broker.
Since the execution.complete doesn't get processed, the sync() doesn't return.
Hence the deadlock.
Solution
----------
I rewrote the receive logic using a LinkedBlockingQueue and leveraging the application thread that calls receive methods
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@569688 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/rubygen')
0 files changed, 0 insertions, 0 deletions