Author: cctrieloff
Date: Wed Jan  6 21:48:42 2010
New Revision: 896687

URL: http://svn.apache.org/viewvc?rev=896687&view=rev
Log:
fix & test QPID-2320

Modified:
    qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
    qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp?rev=896687&r1=896686&r2=896687&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp Wed Jan  6 21:48:42 2010
@@ -263,9 +263,10 @@
     Mutex::ScopedLock locker(messageLock);
     QPID_LOG(debug, "attempting to acquire " << msg.position);
     Messages::iterator i = findAt(msg.position); 
-    if ((i != messages.end() && !lastValueQueue) // note that in some cases 
payload not be set
-        || (lastValueQueue && (i->position == msg.position) && 
-            msg.payload.get() == checkLvqReplace(*i).payload.get()) )  {
+    if ((i != messages.end() && i->position == msg.position) && // note that 
in some cases payload not be set
+        (!lastValueQueue ||
+        (lastValueQueue && msg.payload.get() == 
checkLvqReplace(*i).payload.get()) ) // note this is safe for no payload set 
0==0
+        )  {
 
         clearLVQIndex(msg);
         QPID_LOG(debug,
@@ -273,9 +274,7 @@
                  i->position << " == " << msg.position);
         messages.erase(i);
         return true;
-    } else {
-        QPID_LOG(debug, "No match: " << i->position << " != " << msg.position);
-    }
+    } 
     
     QPID_LOG(debug, "Acquire failed for " << msg.position);
     return false;

Modified: qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp?rev=896687&r1=896686&r2=896687&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp Wed Jan  6 21:48:42 2010
@@ -544,9 +544,14 @@
     framing::SequenceNumber sequence(1);
     QueuedMessage qmsg(queue.get(), msg1, sequence);
     QueuedMessage qmsg2(queue.get(), msg2, ++sequence);
+    framing::SequenceNumber sequence1(10);
+    QueuedMessage qmsg3(queue.get(), 0, sequence1);
 
     BOOST_CHECK(!queue->acquire(qmsg));
     BOOST_CHECK(queue->acquire(qmsg2));
+    // Acquire the massage again to test failure case.
+    BOOST_CHECK(!queue->acquire(qmsg2));
+    BOOST_CHECK(!queue->acquire(qmsg3));
 
     BOOST_CHECK_EQUAL(queue->getMessageCount(), 2u);
 



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to