From 90c8ded77131dd848eac5290e966962fbe5c30ed Mon Sep 17 00:00:00 2001 From: Robert Davies Date: Tue, 20 May 2008 07:01:42 +0000 Subject: [PATCH] Fix for https://issues.apache.org/activemq/browse/AMQ-1717 git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@658127 13f79535-47bb-0310-9956-ffa450edef68 --- .../main/java/org/apache/activemq/broker/region/Queue.java | 5 +++++ .../main/java/org/apache/activemq/broker/region/Topic.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java b/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java index 557cd46d75..098ed9558c 100755 --- a/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java +++ b/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java @@ -424,6 +424,11 @@ public class Queue extends BaseDestination implements Task { final ConnectionContext context = producerExchange.getConnectionContext(); synchronized (sendLock) { if (store != null && message.isPersistent()) { + if (isProducerFlowControl() && context.isProducerFlowControl() ) { + if (systemUsage.isSendFailIfNoSpace() && systemUsage.getStoreUsage().isFull()) { + throw new javax.jms.ResourceAllocationException("Usage Manager Store is Full"); + } + } while (!systemUsage.getStoreUsage().waitForSpace(1000)) { if (context.getStopping().get()) { throw new IOException( diff --git a/activemq-core/src/main/java/org/apache/activemq/broker/region/Topic.java b/activemq-core/src/main/java/org/apache/activemq/broker/region/Topic.java index 740510ba91..90d737cada 100755 --- a/activemq-core/src/main/java/org/apache/activemq/broker/region/Topic.java +++ b/activemq-core/src/main/java/org/apache/activemq/broker/region/Topic.java @@ -385,6 +385,11 @@ public class Topic extends BaseDestination implements Task{ if (topicStore != null && message.isPersistent() && !canOptimizeOutPersistence()) { + if (isProducerFlowControl() && context.isProducerFlowControl() ) { + if (systemUsage.isSendFailIfNoSpace() && systemUsage.getStoreUsage().isFull()) { + throw new javax.jms.ResourceAllocationException("Usage Manager Store is Full"); + } + } while (!systemUsage.getStoreUsage().waitForSpace(1000)) { if (context.getStopping().get()) { throw new IOException("Connection closed, send aborted.");