Author: aconway
Date: Tue Sep 11 15:35:01 2012
New Revision: 1383453
URL: http://svn.apache.org/viewvc?rev=1383453&view=rev
Log:
NO-JIRA: Correct bug in ReplicatingSubscription::getNext - find next message
*after* position.
Modified:
qpid/trunk/qpid/cpp/src/qpid/ha/QueueReplicator.cpp
qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.cpp
qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h
Modified: qpid/trunk/qpid/cpp/src/qpid/ha/QueueReplicator.cpp
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/ha/QueueReplicator.cpp?rev=1383453&r1=1383452&r2=1383453&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/ha/QueueReplicator.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/ha/QueueReplicator.cpp Tue Sep 11 15:35:01 2012
@@ -120,10 +120,10 @@ void QueueReplicator::initializeBridge(B
settings.setTable(ReplicatingSubscription::QPID_BROKER_INFO,
brokerInfo.asFieldTable());
SequenceNumber front;
- if (ReplicatingSubscription::getFront(*queue, front)) {
+ if (ReplicatingSubscription::getFront(*queue, front))
settings.setInt(ReplicatingSubscription::QPID_FRONT, front);
- QPID_LOG(debug, "QPID_FRONT for " << queue->getName() << " is " <<
front);
- }
+ QPID_LOG(debug, logPrefix << " subscribe with settings " << settings);
+
peer.getMessage().subscribe(
args.i_src, args.i_dest, 0/*accept-explicit*/, 1/*not-acquired*/,
false/*exclusive*/, "", 0, settings);
@@ -177,7 +177,8 @@ void QueueReplicator::route(Deliverable&
// Verify that there are no messages after the new position in the
queue.
SequenceNumber next;
if (ReplicatingSubscription::getNext(*queue, position, next))
- throw Exception("Invalid position move, preceeds messages");
+ throw Exception(QPID_MSG(logPrefix << "Invalid position " <<
position
+ << " preceeds message at " << next));
queue->setPosition(position);
}
// Ignore unknown event keys, may be introduced in later versions.
Modified: qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.cpp
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.cpp?rev=1383453&r1=1383452&r2=1383453&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.cpp Tue Sep 11
15:35:01 2012
@@ -99,10 +99,10 @@ bool getSequence(const Message& message,
}
}
bool ReplicatingSubscription::getNext(
- broker::Queue& q, SequenceNumber from, SequenceNumber& result)
+ broker::Queue& q, SequenceNumber position, SequenceNumber& result)
{
QueueCursor cursor(REPLICATOR);
- return q.seek(cursor, boost::bind(&getSequence, _1, boost::ref(result)),
from);
+ return q.seek(cursor, boost::bind(&getSequence, _1, boost::ref(result)),
position+1);
}
bool ReplicatingSubscription::getFront(broker::Queue& q, SequenceNumber&
front) {
Modified: qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h?rev=1383453&r1=1383452&r2=1383453&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h Tue Sep 11
15:35:01 2012
@@ -85,10 +85,10 @@ class ReplicatingSubscription : public b
*@return false if queue is empty.
*/
static bool getFront(broker::Queue&, framing::SequenceNumber& result);
- /** Get next message after from in queue.
+ /** Get next message after position in queue.
*@return false if none found.
*/
- static bool getNext(broker::Queue&, framing::SequenceNumber from,
+ static bool getNext(broker::Queue&, framing::SequenceNumber position,
framing::SequenceNumber& result);
ReplicatingSubscription(broker::SemanticState* parent,
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]