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]

Reply via email to