summaryrefslogtreecommitdiff
path: root/qpid/java/broker
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2008-06-20 09:37:20 +0000
committerRobert Godfrey <rgodfrey@apache.org>2008-06-20 09:37:20 +0000
commitcd633e9ec729c628f38ac4c3021f6223e68d81bb (patch)
tree2cbf9f8de96f2c9e492d2b45f722e60d8e057996 /qpid/java/broker
parent6914ef1fd32597442c8a4dff89a3675c82932084 (diff)
downloadqpid-python-cd633e9ec729c628f38ac4c3021f6223e68d81bb.tar.gz
QPID-1144 : Reference count drops to zero too early for immediate messages in a txn
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@669841 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker')
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransactionalContext.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransactionalContext.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransactionalContext.java
index ad8303ec5d..3c71282c57 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransactionalContext.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransactionalContext.java
@@ -93,11 +93,19 @@ public class LocalTransactionalContext implements TransactionalContext
public void process() throws AMQException
{
- QueueEntry entry = _queue.enqueue(getStoreContext(),_message);
+ _message.incrementReference();
+ try
+ {
+ QueueEntry entry = _queue.enqueue(getStoreContext(),_message);
- if(entry.immediateAndNotDelivered())
+ if(entry.immediateAndNotDelivered())
+ {
+ getReturnMessages().add(new NoConsumersException(_message));
+ }
+ }
+ finally
{
- getReturnMessages().add(new NoConsumersException(_message));
+ _message.decrementReference(getStoreContext());
}
}
}