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 2010/06/24 13:22:28 UTC

svn commit: r957511 - in /qpid/trunk/qpid/cpp/src: qpid/broker/Message.cpp qpid/broker/Queue.cpp qpid/broker/Queue.h tests/federation.py

Author: gsim
Date: Thu Jun 24 11:22:28 2010
New Revision: 957511

URL: http://svn.apache.org/viewvc?rev=957511&view=rev
Log:
QPID-2691: ensure ttl adjustment uses correct expiration on cloned message

Modified:
    qpid/trunk/qpid/cpp/src/qpid/broker/Message.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
    qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h
    qpid/trunk/qpid/cpp/src/tests/federation.py

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Message.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Message.cpp?rev=957511&r1=957510&r2=957511&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Message.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Message.cpp Thu Jun 24 11:22:28 2010
@@ -55,8 +55,11 @@ Message::Message(const framing::Sequence
 Message::Message(const Message& original) :
     PersistableMessage(), frames(original.frames), persistenceId(0), redelivered(false), loaded(false),
     staged(false), forcePersistentPolicy(false), publisher(0), adapter(0), 
-    expiration(FAR_FUTURE), enqueueCallback(0), dequeueCallback(0),
-    inCallback(false), requiredCredit(0) {}
+    expiration(original.expiration), enqueueCallback(0), dequeueCallback(0),
+    inCallback(false), requiredCredit(0) 
+{
+    setExpiryPolicy(original.expiryPolicy);
+}
 
 Message::~Message()
 {

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=957511&r1=957510&r2=957511&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp Thu Jun 24 11:22:28 2010
@@ -141,7 +141,7 @@ bool Queue::isExcluded(boost::intrusive_
     return traceExclude.size() && msg->isExcluded(traceExclude);
 }
 
-void Queue::deliver(boost::intrusive_ptr<Message>& msg){
+void Queue::deliver(boost::intrusive_ptr<Message> msg){
     if (msg->isImmediate() && getConsumerCount() == 0) {
         if (alternateExchange) {
             DeliverableMessage deliverable(msg);

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h?rev=957511&r1=957510&r2=957511&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Queue.h Thu Jun 24 11:22:28 2010
@@ -211,7 +211,7 @@ namespace qpid {
              * Delivers a message to the queue. Will record it as
              * enqueued if persistent then process it.
              */
-            QPID_BROKER_EXTERN void deliver(boost::intrusive_ptr<Message>& msg);
+            QPID_BROKER_EXTERN void deliver(boost::intrusive_ptr<Message> msg);
             /**
              * Dispatches the messages immediately to a consumer if
              * one is available or stores it for later if not.

Modified: qpid/trunk/qpid/cpp/src/tests/federation.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/federation.py?rev=957511&r1=957510&r2=957511&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/federation.py (original)
+++ qpid/trunk/qpid/cpp/src/tests/federation.py Thu Jun 24 11:22:28 2010
@@ -358,7 +358,7 @@ class FederationTests(TestBase010):
         for b, t in zip(body, trace):
             headers = {}
             if (t): headers["x-qpid.trace"]=t
-            dp = r_session.delivery_properties(routing_key="my-key")
+            dp = r_session.delivery_properties(routing_key="my-key", ttl=1000*60*5)
             mp = r_session.message_properties(application_headers=headers)
             r_session.message_transfer(destination="amq.direct", message=Message(dp, mp, b))
 
@@ -366,6 +366,8 @@ class FederationTests(TestBase010):
             msg = queue.get(timeout=5)
             self.assertEqual("yes", msg.body)
             self.assertEqual(e, self.getAppHeader(msg, "x-qpid.trace"))
+            assert(msg.get("delivery_properties").ttl > 0)
+            assert(msg.get("delivery_properties").ttl < 1000*60*50)
 
         try:
             extra = queue.get(timeout=1)



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org