/** * @throws Exception */ protected void doCommit() throws Exception { if (containsPersistent || xid != null && state == State.PREPARED) { // ^^ These are the scenarios where we require a storage.commit // for anything else we won't use the journal storageManager.commit(id); } state = State.COMMITTED; }
@Override public void commit(long txID) throws Exception { manager.commit(txID); }
@Override public void commit(long txID, boolean lineUpContext) throws Exception { manager.commit(txID, lineUpContext); }
@Override public void clear() throws Exception { logger.debug("DuplicateIDCacheImpl(" + this.address + ")::clear removing duplicate ID data"); synchronized (this) { if (ids.size() > 0) { long tx = storageManager.generateID(); for (Pair<ByteArrayHolder, Long> id : ids) { storageManager.deleteDuplicateIDTransactional(tx, id.getB()); } storageManager.commit(tx); } ids.clear(); cache.clear(); pos = 0; } }
@Override public void processReload() throws Exception { if (recoveredACK != null) { if (logger.isTraceEnabled()) { logger.trace("********** processing reload!!!!!!!"); } Collections.sort(recoveredACK); long txDeleteCursorOnReload = -1; for (PagePosition pos : recoveredACK) { lastAckedPosition = pos; PageCursorInfo pageInfo = getPageInfo(pos); if (pageInfo == null) { ActiveMQServerLogger.LOGGER.pageNotFound(pos); if (txDeleteCursorOnReload == -1) { txDeleteCursorOnReload = store.generateID(); } store.deleteCursorAcknowledgeTransactional(txDeleteCursorOnReload, pos.getRecordID()); } else { pageInfo.loadACK(pos); } } if (txDeleteCursorOnReload >= 0) { store.commit(txDeleteCursorOnReload); } recoveredACK.clear(); recoveredACK = null; } }
storage.commit(txCleanup); } catch (Exception e) { newRecordID = recordID;
storageManager.commit(txID);
store.commit(tx);
@Test public void testPageCountRecordSize() throws Exception { long tx = server.getStorageManager().generateID(); server.getStorageManager().storePageCounter(tx, 1, 1, 100); server.getStorageManager().commit(tx); server.getStorageManager().stop(); JournalStorageManager journalStorageManager = (JournalStorageManager) server.getStorageManager(); List<RecordInfo> committedRecords = new LinkedList<>(); List<PreparedTransactionInfo> preparedTransactions = new LinkedList<>(); try { journalStorageManager.getMessageJournal().start(); journalStorageManager.getMessageJournal().load(committedRecords, preparedTransactions, transactionFailure); ActiveMQBuffer buff = ActiveMQBuffers.wrappedBuffer(committedRecords.get(0).data); PageCountRecord encoding = new PageCountRecord(); encoding.decode(buff); Assert.assertEquals(100, encoding.getPersistentSize()); } finally { journalStorageManager.getMessageJournal().stop(); } }
@Test public void testPageCursorCounterRecordSizeTX() throws Exception { long tx = server.getStorageManager().generateID(); server.getStorageManager().storePageCounterInc(tx, 1, 1, 1000); server.getStorageManager().commit(tx); server.getStorageManager().stop(); JournalStorageManager journalStorageManager = (JournalStorageManager) server.getStorageManager(); List<RecordInfo> committedRecords = new LinkedList<>(); List<PreparedTransactionInfo> preparedTransactions = new LinkedList<>(); try { journalStorageManager.getMessageJournal().start(); journalStorageManager.getMessageJournal().load(committedRecords, preparedTransactions, transactionFailure); ActiveMQBuffer buff = ActiveMQBuffers.wrappedBuffer(committedRecords.get(0).data); PageCountRecordInc encoding = new PageCountRecordInc(); encoding.decode(buff); Assert.assertEquals(1000, encoding.getPersistentSize()); } finally { journalStorageManager.getMessageJournal().stop(); } }
server.getStorageManager().commit(tx);