use of org.apache.qpid.server.txn.Xid in project qpid-broker-j by apache.
the class MemoryMessageStore method commitTransactionInternal.
private void commitTransactionInternal(MemoryMessageStoreTransaction transaction) {
synchronized (_transactionLock) {
for (Map.Entry<UUID, Set<Long>> localEnqueuedEntry : transaction._localEnqueueMap.entrySet()) {
Set<Long> messageIds = _messageInstances.get(localEnqueuedEntry.getKey());
if (messageIds == null) {
messageIds = new HashSet<Long>();
_messageInstances.put(localEnqueuedEntry.getKey(), messageIds);
}
messageIds.addAll(localEnqueuedEntry.getValue());
}
for (Map.Entry<UUID, Set<Long>> loacalDequeueEntry : transaction._localDequeueMap.entrySet()) {
Set<Long> messageIds = _messageInstances.get(loacalDequeueEntry.getKey());
if (messageIds != null) {
messageIds.removeAll(loacalDequeueEntry.getValue());
if (messageIds.isEmpty()) {
_messageInstances.remove(loacalDequeueEntry.getKey());
}
}
}
for (Map.Entry<Xid, DistributedTransactionRecords> entry : transaction._localDistributedTransactionsRecords.entrySet()) {
_distributedTransactions.put(entry.getKey(), entry.getValue());
}
for (Xid removed : transaction._localDistributedTransactionsRemoves) {
_distributedTransactions.remove(removed);
}
}
}
Aggregations