On 06/15/2011 09:15 PM, [email protected] wrote:
Author: aconway
Date: Wed Jun 15 20:15:51 2011
New Revision: 1136170

URL: http://svn.apache.org/viewvc?rev=1136170&view=rev
Log:
QPID-3280: Performance problem with TTL messages.

When sending a large number of messages with nonzero TTLs to a
cluster, overall message throughput drops by around 20-30% compared to
messages with TTL 0.

The previous approach to TTL in the cluster is replaced with a simpler
"cluster clock". Also QueueCleaner is executed in the cluster timer,
and modified to be deterministic in a cluster.

[snip]

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=1136170&r1=1136169&r2=1136170&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp Wed Jun 15 20:15:51 2011

[snip]

@@ -1197,6 +1203,10 @@ const Broker* Queue::getBroker()
      return broker;
  }

+void Queue::setDequeueSincePurge(uint32_t value) {
+    dequeueSincePurge = AtomicValue<uint32_t>(value);
+}
+

  Queue::UsageBarrier::UsageBarrier(Queue&  q) : parent(q), count(0) {}


The snippet above causes a compilation error on windows. There the mutex-based version of AtomicValue is used and that cannot be assigned as the mutex is non-copyable.

Need to add an assignment operator to AtomicValue that works in both cases, or use the existing operators to test and set until update succeeds.


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

Reply via email to