Repository: activemq
Updated Branches:
  refs/heads/master f0ebda7ef -> ec9a92f6f


https://issues.apache.org/jira/browse/AMQ-5649

Ensures that max producers on a connection includes anonymous producers
in its count, based on patch from: Christopher L. Shannon (cshannon)
<[email protected]>

Merged the test into the existing ConfigTest that validates the max
producers functionality.

Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/ec9a92f6
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/ec9a92f6
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/ec9a92f6

Branch: refs/heads/master
Commit: ec9a92f6fc5554017e1b3551b24e2e19e0da8fbc
Parents: f0ebda7
Author: Timothy Bish <[email protected]>
Authored: Mon Apr 13 10:25:51 2015 -0400
Committer: Timothy Bish <[email protected]>
Committed: Mon Apr 13 10:25:51 2015 -0400

----------------------------------------------------------------------
 .../java/org/apache/activemq/broker/TransportConnection.java  | 5 ++++-
 .../src/test/java/org/apache/activemq/config/ConfigTest.java  | 7 +++++++
 2 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/ec9a92f6/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
----------------------------------------------------------------------
diff --git 
a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
 
b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
index 7f9fa6c..5c6307a 100755
--- 
a/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
+++ 
b/activemq-broker/src/main/java/org/apache/activemq/broker/TransportConnection.java
@@ -602,7 +602,10 @@ public class TransportConnection implements Connection, 
Task, CommandVisitor {
         // Avoid replaying dup commands
         if (!ss.getProducerIds().contains(info.getProducerId())) {
             ActiveMQDestination destination = info.getDestination();
-            if (destination != null && 
!AdvisorySupport.isAdvisoryTopic(destination)) {
+            // Do not check for null here as it would cause the count of max 
producers to exclude
+            // anonymous producers.  The isAdvisoryTopic method checks for 
null so it is safe to
+            // call it from here with a null Destination value.
+            if (!AdvisorySupport.isAdvisoryTopic(destination)) {
                 if (getProducerCount(connectionId) >= 
connector.getMaximumProducersAllowedPerConnection()){
                     throw new IllegalStateException("Can't add producer on 
connection " + connectionId + ": at maximum limit: " + 
connector.getMaximumProducersAllowedPerConnection());
                 }

http://git-wip-us.apache.org/repos/asf/activemq/blob/ec9a92f6/activemq-unit-tests/src/test/java/org/apache/activemq/config/ConfigTest.java
----------------------------------------------------------------------
diff --git 
a/activemq-unit-tests/src/test/java/org/apache/activemq/config/ConfigTest.java 
b/activemq-unit-tests/src/test/java/org/apache/activemq/config/ConfigTest.java
index 82b5ebe..a62ce07 100755
--- 
a/activemq-unit-tests/src/test/java/org/apache/activemq/config/ConfigTest.java
+++ 
b/activemq-unit-tests/src/test/java/org/apache/activemq/config/ConfigTest.java
@@ -383,6 +383,13 @@ public class ConfigTest {
             } catch (JMSException expected) {
             }
 
+            // Tests the anonymous producer case also counts.
+            try {
+                session.createProducer(null);
+                fail("Should have got an exception on exceeding 
MAX_PRODUCERS");
+            } catch (JMSException expected) {
+            }
+
             try {
                 for (int i = 0; i < (MAX_CONSUMERS + 1); i++) {
                     MessageConsumer consumer = session.createConsumer(topic);

Reply via email to