You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2013/04/25 14:28:24 UTC

svn commit: r1475723 - in /qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10: ReceiverImpl.cpp SessionImpl.cpp

Author: gsim
Date: Thu Apr 25 12:28:23 2013
New Revision: 1475723

URL: http://svn.apache.org/r1475723
Log:
QPID-4764: tweaks to locking in receiver and session to avoid deadlock

Modified:
    qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp
    qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp?rev=1475723&r1=1475722&r2=1475723&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp Thu Apr 25 12:28:23 2013
@@ -123,7 +123,6 @@ void ReceiverImpl::init(qpid::client::As
 }
 
 const std::string& ReceiverImpl::getName() const {
-    sys::Mutex::ScopedLock l(lock);
     return destination;
 }
 
@@ -200,9 +199,15 @@ void ReceiverImpl::closeImpl()
     if (state != CANCELLED) {
         state = CANCELLED;
         sync(session).messageStop(destination);
-        parent->releasePending(destination);
+        {
+            sys::Mutex::ScopedUnlock l(lock);
+            parent->releasePending(destination);
+        }
         source->cancel(session, destination);
-        parent->receiverCancelled(destination);
+        {
+            sys::Mutex::ScopedUnlock l(lock);
+            parent->receiverCancelled(destination);
+        }
     }
 }
 

Modified: qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp?rev=1475723&r1=1475722&r2=1475723&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp Thu Apr 25 12:28:23 2013
@@ -471,13 +471,11 @@ void SessionImpl::rollbackImpl()
 
 void SessionImpl::acknowledgeImpl()
 {
-    ScopedLock l(lock);
     if (!transactional) incoming.accept();
 }
 
 void SessionImpl::acknowledgeImpl(qpid::messaging::Message& m, bool cumulative)
 {
-    ScopedLock l(lock);
     if (!transactional) incoming.accept(MessageImplAccess::get(m).getInternalId(), cumulative);
 }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org