[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