diff options
Diffstat (limited to 'qpid/java')
| -rw-r--r-- | qpid/java/broker/src/main/java/org/apache/qpid/server/transactionlog/BaseTransactionLog.java | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/transactionlog/BaseTransactionLog.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/transactionlog/BaseTransactionLog.java index 8d7b22d470..7bf78ad977 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/transactionlog/BaseTransactionLog.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/transactionlog/BaseTransactionLog.java @@ -114,36 +114,6 @@ public class BaseTransactionLog implements TransactionLog { context.dequeueMessage(queue, messageId); - if (context.inTransaction()) - { - - Map<Long, List<AMQQueue>> messageMap = context.getDequeueMap(); - - //For each Message ID that is in the map check - Set<Long> messageIDs = messageMap.keySet(); - - if (_logger.isInfoEnabled()) - { - _logger.info("Pre-Processing single dequeue of:" + messageIDs); - } - - Iterator iterator = messageIDs.iterator(); - - while (iterator.hasNext()) - { - Long messageID = (Long) iterator.next(); - //If we don't have a gloabl reference for this message then there is only a single enqueue - //can check here to see if this is the last reference? - if (_idToQueues.get(messageID) == null) - { - // Add the removal of the message to this transaction - _delegate.removeMessage(context, messageID); - // Remove this message ID as we have processed it so we don't reprocess after the main commmit - iterator.remove(); - } - } - } - _delegate.dequeueMessage(context, queue, messageId); if (!context.inTransaction()) @@ -172,6 +142,35 @@ public class BaseTransactionLog implements TransactionLog public void commitTran(StoreContext context) throws AMQException { + + Map<Long, List<AMQQueue>> messageMap = context.getDequeueMap(); + + //For each Message ID that is in the map check + Set<Long> messageIDs = messageMap.keySet(); + + if (_logger.isInfoEnabled()) + { + _logger.info("Pre-Processing single dequeue of:" + messageIDs); + } + + Iterator iterator = messageIDs.iterator(); + + while (iterator.hasNext()) + { + Long messageID = (Long) iterator.next(); + //If we don't have a gloabl reference for this message then there + // is only a single enqueue can check here to see if this is the + // last reference? + if (_idToQueues.get(messageID) == null) + { + // Add the removal of the message to this transaction + _delegate.removeMessage(context, messageID); + // Remove this message ID as we have processed it so we don't + // reprocess after the main commmit + iterator.remove(); + } + } + //Perform real commit of current data _delegate.commitTran(context); |
