From 6ddeac7bc0e52336b92673ee7e908894bc058cab Mon Sep 17 00:00:00 2001 From: Robert Davies Date: Sun, 31 Dec 2006 15:35:38 +0000 Subject: [PATCH] check we are not a slaveBroker() when dispatching git-svn-id: https://svn.apache.org/repos/asf/incubator/activemq/trunk@491431 13f79535-47bb-0310-9956-ffa450edef68 --- .../activemq/broker/region/PrefetchSubscription.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java b/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java index bc521d2a1f..c01bbab844 100755 --- a/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java +++ b/activemq-core/src/main/java/org/apache/activemq/broker/region/PrefetchSubscription.java @@ -125,18 +125,19 @@ abstract public class PrefetchSubscription extends AbstractSubscription{ public void add(MessageReference node) throws Exception{ boolean pendingEmpty=false; + synchronized(pending){ pendingEmpty=pending.isEmpty(); enqueueCounter++; } - if(!isFull()&&pendingEmpty){ + if(!isFull()&&pendingEmpty&&!broker.isSlaveBroker()){ dispatch(node); }else{ optimizePrefetch(); synchronized(pending){ if(pending.isEmpty()&&log.isDebugEnabled()){ log.debug("Prefetch limit."); - } + } pending.addMessageLast(node); } //we might be able to dispatch messages (i.e. not full() anymore) @@ -155,6 +156,7 @@ abstract public class PrefetchSubscription extends AbstractSubscription{ pending.remove(); createMessageDispatch(node,node.getMessage()); dispatched.addLast(node); + return; } } @@ -162,7 +164,7 @@ abstract public class PrefetchSubscription extends AbstractSubscription{ pending.release(); } throw new JMSException("Slave broker out of sync with master: Dispatched message ("+mdn.getMessageId() - +") was not in the pending list: "+pending); + +") was not in the pending list"); } } @@ -395,7 +397,7 @@ abstract public class PrefetchSubscription extends AbstractSubscription{ protected void dispatchMatched() throws IOException{ - if(dispatching.compareAndSet(false,true)){ + if(!broker.isSlaveBroker() && dispatching.compareAndSet(false,true)){ try{ List toDispatch=null; synchronized(pending){