diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2008-06-20 09:37:20 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2008-06-20 09:37:20 +0000 |
| commit | 246767f5a232b959745cbd3754bb2d66e6d0e8b7 (patch) | |
| tree | d2640fe649fcba5166e55ec01f468cb42d73bcbb /java/broker/src | |
| parent | 3ce808bc9b559c3d5a95257512ce2debf701454b (diff) | |
| download | qpid-python-246767f5a232b959745cbd3754bb2d66e6d0e8b7.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/qpid@669841 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker/src')
| -rw-r--r-- | java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransactionalContext.java | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransactionalContext.java b/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransactionalContext.java index ad8303ec5d..3c71282c57 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/txn/LocalTransactionalContext.java +++ b/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()); } } } |
