summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Anthony Giusti <kgiusti@apache.org>2011-03-02 19:02:00 +0000
committerKenneth Anthony Giusti <kgiusti@apache.org>2011-03-02 19:02:00 +0000
commitbfc890b6dbfc25211dfd9639f76df46e47e0e129 (patch)
tree4447ff369453cda6dd815a66d662e2dbb79ea2b1
parent872b548667e23d49a8ffacfd272a38f44a19321c (diff)
downloadqpid-python-bfc890b6dbfc25211dfd9639f76df46e47e0e129.tar.gz
QPID-3081: add statistic for queue flow control transitions
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1076329 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/src/qpid/broker/QueueFlowLimit.cpp4
-rw-r--r--qpid/cpp/src/tests/queue_flow_limit_tests.py3
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java5
-rw-r--r--qpid/specs/management-schema.xml1
4 files changed, 11 insertions, 2 deletions
diff --git a/qpid/cpp/src/qpid/broker/QueueFlowLimit.cpp b/qpid/cpp/src/qpid/broker/QueueFlowLimit.cpp
index a99c9de7df..21c7a2a737 100644
--- a/qpid/cpp/src/qpid/broker/QueueFlowLimit.cpp
+++ b/qpid/cpp/src/qpid/broker/QueueFlowLimit.cpp
@@ -138,8 +138,10 @@ void QueueFlowLimit::enqueued(const QueuedMessage& msg)
flowStopped = true;
QPID_LOG(info, "Queue \"" << queueName << "\": has reached " << flowStopSize << " enqueued bytes. Producer flow control activated." );
}
- if (flowStopped && queueMgmtObj)
+ if (flowStopped && queueMgmtObj) {
queueMgmtObj->set_flowStopped(true);
+ queueMgmtObj->inc_flowStoppedCount();
+ }
}
/** @todo KAG: - REMOVE ONCE STABLE */
diff --git a/qpid/cpp/src/tests/queue_flow_limit_tests.py b/qpid/cpp/src/tests/queue_flow_limit_tests.py
index ac62dcdd1e..bdd2a21b78 100644
--- a/qpid/cpp/src/tests/queue_flow_limit_tests.py
+++ b/qpid/cpp/src/tests/queue_flow_limit_tests.py
@@ -137,12 +137,12 @@ class QueueFlowLimitTests(TestBase010):
"""
self.startQmf();
oid = self._create_queue("test-q", stop_count=373, resume_count=229)
+ self.assertEqual(self.qmf.getObjects(_objectId=oid)[0].flowStoppedCount, 0)
sndr1 = self._start_qpid_send("test-q", count=1213, content="XXX", capacity=50);
sndr2 = self._start_qpid_send("test-q", count=797, content="Y", capacity=13);
sndr3 = self._start_qpid_send("test-q", count=331, content="ZZZZZ", capacity=149);
totalMsgs = 1213 + 797 + 331
-
# wait until flow control is active
count = 0
@@ -180,6 +180,7 @@ class QueueFlowLimitTests(TestBase010):
self.assertEqual(count, totalMsgs)
self.failIf(self.qmf.getObjects(_objectId=oid)[0].flowStopped)
+ self.failUnless(self.qmf.getObjects(_objectId=oid)[0].flowStoppedCount)
self._delete_queue("test-q")
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java b/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java
index a6f319cb1f..5192d5be6f 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java
@@ -1096,6 +1096,11 @@ public class QMFService implements ConfigStore.ConfigEventListener, Closeable
return Boolean.FALSE;
}
+ public Long getFlowStoppedCount()
+ {
+ return 0L;
+ }
+
public BrokerSchema.QueueClass.PurgeMethodResponseCommand purge(final BrokerSchema.QueueClass.PurgeMethodResponseCommandFactory factory,
final Long request)
{
diff --git a/qpid/specs/management-schema.xml b/qpid/specs/management-schema.xml
index e52e3f23cf..881632c881 100644
--- a/qpid/specs/management-schema.xml
+++ b/qpid/specs/management-schema.xml
@@ -176,6 +176,7 @@
<statistic name="unackedMessages" type="hilo32" unit="message" desc="Messages consumed but not yet acked"/>
<statistic name="messageLatency" type="mmaTime" unit="nanosecond" desc="Broker latency through this queue"/>
<statistic name="flowStopped" type="bool" desc="Flow control active."/>
+ <statistic name="flowStoppedCount" type="count32" desc="Number of times flow control was activated for this queue"/>
<method name="purge" desc="Discard all or some messages on a queue">
<arg name="request" dir="I" type="uint32" desc="0 for all messages or n>0 for n messages"/>