[hornetq-commits] JBoss hornetq SVN: r8214 - trunk/src/main/org/hornetq/core/server/impl.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Nov 4 18:29:37 EST 2009
Author: clebert.suconic at jboss.com
Date: 2009-11-04 18:29:37 -0500 (Wed, 04 Nov 2009)
New Revision: 8214
Modified:
trunk/src/main/org/hornetq/core/server/impl/ServerConsumerImpl.java
Log:
Fixing eventual failure on LargeMessageTest
Modified: trunk/src/main/org/hornetq/core/server/impl/ServerConsumerImpl.java
===================================================================
--- trunk/src/main/org/hornetq/core/server/impl/ServerConsumerImpl.java 2009-11-04 16:59:56 UTC (rev 8213)
+++ trunk/src/main/org/hornetq/core/server/impl/ServerConsumerImpl.java 2009-11-04 23:29:37 UTC (rev 8214)
@@ -94,7 +94,7 @@
private volatile LargeMessageDeliverer largeMessageDeliverer = null;
- private boolean largeMessageInDelivery;
+ private volatile boolean largeMessageInDelivery;
/**
* if we are a browse only consumer we don't need to worry about acknowledgemenets or being started/stopeed by the session.
@@ -200,8 +200,6 @@
return HandleStatus.BUSY;
}
- // note: Since we schedule deliveries to start under replication, we use a counter of pendingLargeMessages.
-
// If there is a pendingLargeMessage we can't take another message
// This has to be checked inside the lock as the set to null is done inside the lock
if (largeMessageInDelivery)
@@ -625,7 +623,7 @@
private final long sizePendingLargeMessage;
/** The current message being processed */
- private LargeServerMessage largeMessage;
+ private volatile LargeServerMessage largeMessage;
private final MessageReference ref;
@@ -757,6 +755,13 @@
lock.lock();
try
{
+ if (largeMessage == null)
+ {
+ // handleClose could be calling close while handleDeliver is also calling finish.
+ // As a result one of them could get here after the largeMessage is already gone.
+ // On that case we just ignore this call
+ return;
+ }
context.close();
largeMessage.releaseResources();
More information about the hornetq-commits
mailing list