Return-Path: Delivered-To: apmail-geronimo-activemq-commits-archive@www.apache.org Received: (qmail 34920 invoked from network); 23 Dec 2005 09:48:22 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 23 Dec 2005 09:48:22 -0000 Received: (qmail 69950 invoked by uid 500); 23 Dec 2005 09:48:22 -0000 Delivered-To: apmail-geronimo-activemq-commits-archive@geronimo.apache.org Received: (qmail 69932 invoked by uid 500); 23 Dec 2005 09:48:22 -0000 Mailing-List: contact activemq-commits-help@geronimo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: activemq-dev@geronimo.apache.org Delivered-To: mailing list activemq-commits@geronimo.apache.org Received: (qmail 69922 invoked by uid 99); 23 Dec 2005 09:48:22 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 23 Dec 2005 01:48:22 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Fri, 23 Dec 2005 01:48:21 -0800 Received: (qmail 34752 invoked by uid 65534); 23 Dec 2005 09:48:01 -0000 Message-ID: <20051223094801.34751.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r358785 - /incubator/activemq/trunk/activemq-core/src/main/java/org/activemq/broker/region/PrefetchSubscription.java Date: Fri, 23 Dec 2005 09:48:00 -0000 To: activemq-commits@geronimo.apache.org From: aco@apache.org X-Mailer: svnmailer-1.0.5 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N 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(){