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]