Author: aco
Date: Fri Dec 23 01:47:47 2005
New Revision: 358785
URL: http://svn.apache.org/viewcvs?rev=358785&view=rev
Log:
Postpone incrementing of reference count and preload size, only after we are
sure that the message will be dispatched by the current subscription. This is
to prevent a memory leak type of scenario.
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/activemq/broker/region/PrefetchSubscription.java
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/activemq/broker/region/PrefetchSubscription.java
URL:
http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/activemq/broker/region/PrefetchSubscription.java?rev=358785&r1=358784&r2=358785&view=diff
==============================================================================
---
incubator/activemq/trunk/activemq-core/src/main/java/org/activemq/broker/region/PrefetchSubscription.java
(original)
+++
incubator/activemq/trunk/activemq-core/src/main/java/org/activemq/broker/region/PrefetchSubscription.java
Fri Dec 23 01:47:47 2005
@@ -239,19 +239,19 @@
private void dispatch(final MessageReference node) throws IOException {
- node.incrementReferenceCount();
-
final Message message = node.getMessage();
if( message == null ) {
return;
- }
- incrementPreloadSize(node.getMessage().getSize());
+ }
// Make sure we can dispatch a message.
if( canDispatch(node) ) {
MessageDispatch md = createMessageDispatch(node, message);
dispatched.addLast(node);
+
+ node.incrementReferenceCount();
+ incrementPreloadSize(node.getMessage().getSize());
if( info.isDispatchAsync() ) {
md.setConsumer(new Runnable(){