private JournalTransaction getTransactionInfo(final long txID) { journalLock.readLock().lock(); try { JournalTransaction tx = transactions.get(txID); if (tx == null) { tx = new JournalTransaction(txID, this); JournalTransaction trans = transactions.putIfAbsent(txID, tx); if (trans != null) { tx = trans; } } return tx; } finally { journalLock.readLock().unlock(); } }
private JournalTransaction getTransactionInfo(final long txID) { journalLock.readLock().lock(); try { JournalTransaction tx = transactions.get(txID); if (tx == null) { tx = new JournalTransaction(txID, this); JournalTransaction trans = transactions.putIfAbsent(txID, tx); if (trans != null) { tx = trans; } } return tx; } finally { journalLock.readLock().unlock(); } }
/** * @param transactionID * @return */ private JournalTransaction getNewJournalTransaction(final long transactionID) { JournalTransaction newTransaction = newTransactions.get(transactionID); if (newTransaction == null) { if (logger.isTraceEnabled()) { logger.trace("creating new journal Transaction " + transactionID); } newTransaction = new JournalTransaction(transactionID, this); newTransactions.put(transactionID, newTransaction); } else if (logger.isTraceEnabled()) { // just logging logger.trace("reusing TX " + transactionID); } return newTransaction; }
/** * @param transactionID * @return */ private JournalTransaction getNewJournalTransaction(final long transactionID) { JournalTransaction newTransaction = newTransactions.get(transactionID); if (newTransaction == null) { if (logger.isTraceEnabled()) { logger.trace("creating new journal Transaction " + transactionID); } newTransaction = new JournalTransaction(transactionID, this); newTransactions.put(transactionID, newTransaction); } else if (logger.isTraceEnabled()) { // just logging logger.trace("reusing TX " + transactionID); } return newTransaction; }
@Override public void onReadDeleteRecordTX(final long transactionID, final RecordInfo info) throws Exception { hasData.lazySet(true); TransactionHolder tx = loadTransactions.get(transactionID); if (tx == null) { tx = new TransactionHolder(transactionID); loadTransactions.put(transactionID, tx); } tx.recordsToDelete.add(info); JournalTransaction tnp = transactions.get(transactionID); if (tnp == null) { tnp = new JournalTransaction(transactionID, JournalImpl.this); transactions.put(transactionID, tnp); } tnp.addNegative(file, info.id); }
@Override public void onReadDeleteRecordTX(final long transactionID, final RecordInfo info) throws Exception { hasData.lazySet(true); TransactionHolder tx = loadTransactions.get(transactionID); if (tx == null) { tx = new TransactionHolder(transactionID); loadTransactions.put(transactionID, tx); } tx.recordsToDelete.add(info); JournalTransaction tnp = transactions.get(transactionID); if (tnp == null) { tnp = new JournalTransaction(transactionID, JournalImpl.this); transactions.put(transactionID, tnp); } tnp.addNegative(file, info.id); }
@Override public void onReadAddRecordTX(final long transactionID, final RecordInfo info) throws Exception { checkID(info.id); hasData.lazySet(true); TransactionHolder tx = loadTransactions.get(transactionID); if (tx == null) { tx = new TransactionHolder(transactionID); loadTransactions.put(transactionID, tx); } tx.recordInfos.add(info); JournalTransaction tnp = transactions.get(transactionID); if (tnp == null) { tnp = new JournalTransaction(transactionID, JournalImpl.this); transactions.put(transactionID, tnp); } tnp.addPositive(file, info.id, info.data.length + JournalImpl.SIZE_ADD_RECORD_TX + 1); // +1 = compact // count }
@Override public void onReadAddRecordTX(final long transactionID, final RecordInfo info) throws Exception { checkID(info.id); hasData.lazySet(true); TransactionHolder tx = loadTransactions.get(transactionID); if (tx == null) { tx = new TransactionHolder(transactionID); loadTransactions.put(transactionID, tx); } tx.recordInfos.add(info); JournalTransaction tnp = transactions.get(transactionID); if (tnp == null) { tnp = new JournalTransaction(transactionID, JournalImpl.this); transactions.put(transactionID, tnp); } tnp.addPositive(file, info.id, info.data.length + JournalImpl.SIZE_ADD_RECORD_TX + 1); // +1 = compact // count }
@Override public void onReadPrepareRecord(final long transactionID, final byte[] extraData, final int numberOfRecords) throws Exception { hasData.lazySet(true); TransactionHolder tx = loadTransactions.get(transactionID); if (tx == null) { // The user could choose to prepare empty transactions tx = new TransactionHolder(transactionID); loadTransactions.put(transactionID, tx); } tx.prepared = true; tx.extraData = extraData; JournalTransaction journalTransaction = transactions.get(transactionID); if (journalTransaction == null) { journalTransaction = new JournalTransaction(transactionID, JournalImpl.this); transactions.put(transactionID, journalTransaction); } boolean healthy = checkTransactionHealth(file, journalTransaction, orderedFiles, numberOfRecords); if (healthy) { journalTransaction.prepare(file); } else { ActiveMQJournalLogger.LOGGER.preparedTXIncomplete(transactionID); tx.invalid = true; } }
@Override public void onReadPrepareRecord(final long transactionID, final byte[] extraData, final int numberOfRecords) throws Exception { hasData.lazySet(true); TransactionHolder tx = loadTransactions.get(transactionID); if (tx == null) { // The user could choose to prepare empty transactions tx = new TransactionHolder(transactionID); loadTransactions.put(transactionID, tx); } tx.prepared = true; tx.extraData = extraData; JournalTransaction journalTransaction = transactions.get(transactionID); if (journalTransaction == null) { journalTransaction = new JournalTransaction(transactionID, JournalImpl.this); transactions.put(transactionID, journalTransaction); } boolean healthy = checkTransactionHealth(file, journalTransaction, orderedFiles, numberOfRecords); if (healthy) { journalTransaction.prepare(file); } else { ActiveMQJournalLogger.LOGGER.preparedTXIncomplete(transactionID); tx.invalid = true; } }
tnp = new JournalTransaction(transactionID, JournalImpl.this); tnp = new JournalTransaction(transactionID, JournalImpl.this); journalTransaction = new JournalTransaction(transactionID, JournalImpl.this);
tnp = new JournalTransaction(transactionID, JournalImpl.this); tnp = new JournalTransaction(transactionID, JournalImpl.this); journalTransaction = new JournalTransaction(transactionID, JournalImpl.this);