[jboss-cvs] JBoss Messaging SVN: r5965 - trunk/src/main/org/jboss/messaging/core/server/impl.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Mar 2 16:23:43 EST 2009


Author: clebert.suconic at jboss.com
Date: 2009-03-02 16:23:43 -0500 (Mon, 02 Mar 2009)
New Revision: 5965

Modified:
   trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java
Log:
Fixing an eventual race on LargeMessages and Pre-ACK. (a test eventually failing on MessageChunkTest)
releaseResources has to be called before decrementReference, or the file could be eventually deleted while it is still opened.

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java	2009-03-02 18:40:06 UTC (rev 5964)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java	2009-03-02 21:23:43 UTC (rev 5965)
@@ -908,9 +908,11 @@
                trace("Finished deliverLargeMessage isBackup = " + messageQueue.isBackup());
             }
 
-            // we must hold one reference, or the file will be deleted before it could be delivered
+            pendingLargeMessage.releaseResources();
+
             if (preAcknowledge && !browseOnly)
             {
+               // We added a reference for pre-ack, to avoid deleting the file before it was delivered
                if (pendingLargeMessage.decrementRefCount() == 0)
                {
                   // On pre-acks for Large messages, the decrement was deferred to large-message, hence we need to
@@ -928,8 +930,6 @@
                }
             }
 
-            pendingLargeMessage.releaseResources();
-
             largeMessageDeliverer = null;
 
             pendingLargeMessagesCounter.decrementAndGet();




More information about the jboss-cvs-commits mailing list