You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by cc...@apache.org on 2008/10/11 20:24:50 UTC
svn commit: r703704 - in /incubator/qpid/trunk/qpid/cpp/src:
qpid/broker/Queue.cpp tests/QueueTest.cpp
Author: cctrieloff
Date: Sat Oct 11 11:24:50 2008
New Revision: 703704
URL: http://svn.apache.org/viewvc?rev=703704&view=rev
Log:
QPID-1306
- Added aquire safety check + test.
Modified:
incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
incubator/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp?rev=703704&r1=703703&r2=703704&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp Sat Oct 11 11:24:50 2008
@@ -202,7 +202,8 @@
Mutex::ScopedLock locker(messageLock);
QPID_LOG(debug, "attempting to acquire " << msg.position);
for (Messages::iterator i = messages.begin(); i != messages.end(); i++) {
- if (i->position == msg.position) {
+ if ((i->position == msg.position && !lastValueQueue) // note that in some cases payload not be set
+ || (lastValueQueue && i->position == msg.position && i->payload.get() == msg.payload.get())) {
if (lastValueQueue){
const framing::FieldTable* ft = msg.payload->getApplicationHeaders();
string key = ft->getString(qpidVQMatchProperty);
Modified: incubator/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp?rev=703704&r1=703703&r2=703704&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp Sat Oct 11 11:24:50 2008
@@ -423,9 +423,12 @@
BOOST_CHECK_EQUAL(queue->getMessageCount(), 3u);
- framing::SequenceNumber sequence;
- QueuedMessage qmsg(queue.get(), msg2, ++sequence);
- queue->acquire(qmsg);
+ framing::SequenceNumber sequence(1);
+ QueuedMessage qmsg(queue.get(), msg1, sequence);
+ QueuedMessage qmsg2(queue.get(), msg2, ++sequence);
+
+ BOOST_CHECK(!queue->acquire(qmsg));
+ BOOST_CHECK(queue->acquire(qmsg2));
BOOST_CHECK_EQUAL(queue->getMessageCount(), 2u);