Refine search
/** * @param reloadManager * @throws Exception * @see org.apache.activemq.artemis.core.journal.Journal#load(org.apache.activemq.artemis.core.journal.LoaderCallback) */ @Override public JournalLoadInformation load(final LoaderCallback reloadManager) throws Exception { return localJournal.load(reloadManager); }
void appendAddRecord(long id, byte recordType, Persister persister, Object record, boolean sync, IOCompletion completionCallback) throws Exception;
/** * @throws Exception * @see org.apache.activemq.artemis.core.server.ActiveMQComponent#start() */ @Override public void start() throws Exception { localJournal.start(); }
byte[] data = outputBuffer.buffer(); RecordInfo record = new RecordInfo(getId(uid, typeName), RECORD_TYPE, data, false, (short)0); previousRecord = getContentForType(typeName).putIfAbsent(uid, record); getContentForType(typeName).replace(uid, record); journal.appendUpdateRecord(previousRecord.id, RECORD_TYPE, data, syncWrites); } else { journal.appendAddRecord(record.id, RECORD_TYPE, data, syncWrites); if (previousRecord == null) { getContentForType(typeName).remove(uid);
public void start() throws Exception { journal.start(); List<RecordInfo> committedRecords = new LinkedList<RecordInfo>(); List<PreparedTransactionInfo> preparedTransactions = new LinkedList<PreparedTransactionInfo>(); TransactionFailureCallback failureCallback = new TransactionFailureCallback() { public void failedTransaction(long l, List<RecordInfo> recordInfos, List<RecordInfo> recordInfos1) { tsLogger.i18NLogger.warn_journal_load_error(); } }; JournalLoadInformation journalLoadInformation = journal.load(committedRecords, preparedTransactions, failureCallback); maxID.set(journalLoadInformation.getMaxID()); if(!preparedTransactions.isEmpty()) { tsLogger.i18NLogger.warn_journal_load_error(); } for(RecordInfo record : committedRecords) { InputBuffer inputBuffer = new InputBuffer(record.data); Uid uid = UidHelper.unpackFrom(inputBuffer); String typeName = inputBuffer.unpackString(); getContentForType(typeName).put(uid, record); // don't unpack the rest yet, we may never need it. read_committed does it on demand. } }
/** * Remove the object's committed state. * * @param uid The object to work on. * @param typeName The type of the object to work on. * @return <code>true</code> if no errors occurred, <code>false</code> * otherwise. * @throws ObjectStoreException if things go wrong. */ public boolean remove_committed(Uid uid, String typeName) throws ObjectStoreException { try { RecordInfo record = getContentForType(typeName).remove(uid); long id = (record != null ? record.id : getId(uid, typeName)); journal.appendDeleteRecord(id, syncDeletes); return true; } catch (IllegalStateException e) { tsLogger.i18NLogger.warn_hornetqobjectstore_remove_state_exception(e); return false; } catch(Exception e) { throw new ObjectStoreException(e); } }
/** * Open the bindings journal and extract all bindings data. * * @throws Exception will be thrown if anything goes wrong reading the bindings journal */ private void getBindings() throws Exception { List<RecordInfo> records = new LinkedList<>(); Journal bindingsJournal = storageManager.getBindingsJournal(); bindingsJournal.start(); ActiveMQServerLogger.LOGGER.debug("Reading bindings journal from " + config.getBindingsDirectory()); bindingsJournal.load(records, null, null); for (RecordInfo info : records) { if (info.getUserRecordType() == JournalRecordIds.QUEUE_BINDING_RECORD) { PersistentQueueBindingEncoding bindingEncoding = (PersistentQueueBindingEncoding) DescribeJournal.newObjectEncoding(info, null); queueBindings.put(bindingEncoding.getId(), bindingEncoding); } else if (info.getUserRecordType() == JournalRecordIds.ADDRESS_BINDING_RECORD) { PersistentAddressBindingEncoding bindingEncoding = (PersistentAddressBindingEncoding) DescribeJournal.newObjectEncoding(info, null); addressBindings.put(bindingEncoding.getId(), bindingEncoding); } } bindingsJournal.stop(); }
@Test public void testPageCursorCounterRecordSize() throws Exception { server.getStorageManager().storePageCounterInc(1, 1, 1000); 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(); } }
replicatedJournal.appendPrepareRecord(1, new FakeData(), false); replicatedJournal.appendAddRecord(1, (byte) 1, new FakeData(), false); replicatedJournal.appendUpdateRecord(1, (byte) 2, new FakeData(), false); replicatedJournal.appendDeleteRecord(1, false); replicatedJournal.appendAddRecordTransactional(2, 2, (byte) 1, new FakeData()); replicatedJournal.appendUpdateRecordTransactional(2, 2, (byte) 2, new FakeData()); replicatedJournal.appendCommitRecord(2, false); replicatedJournal.appendDeleteRecordTransactional(3, 4, new FakeData()); replicatedJournal.appendPrepareRecord(3, new FakeData(), false); replicatedJournal.appendRollbackRecord(3, false); msg.setAddress(dummy); replicatedJournal.appendAddRecordTransactional(23, 24, (byte) 1, new FakeData());
/** * @throws Exception * @see org.apache.activemq.artemis.core.server.ActiveMQComponent#stop() */ @Override public void stop() throws Exception { localJournal.stop(); }
protected void loadIDs(final Journal journal, final BatchingIDGenerator batch) throws Exception { ArrayList<RecordInfo> records = new ArrayList<>(); ArrayList<PreparedTransactionInfo> tx = new ArrayList<>(); journal.start(); journal.load(records, tx, null); Assert.assertEquals(0, tx.size()); Assert.assertTrue("Contains " + records.size(), records.size() > 0); for (RecordInfo record : records) { if (record.userRecordType == JournalRecordIds.ID_COUNTER_RECORD) { ActiveMQBuffer buffer = ActiveMQBuffers.wrappedBuffer(record.data); batch.loadState(record.id, buffer); } } }
@Override public void deleteConnectionFactory(final String cfName) throws Exception { PersistedConnectionFactory oldCF = mapFactories.remove(cfName); if (oldCF != null) { jmsJournal.appendDeleteRecord(oldCF.getId(), false); } }
JournalLoadInformation bindingsInfo = bindingsJournal.load(records, preparedTransactions, null); byte rec = record.getUserRecordType();
void appendUpdateRecord(long id, byte recordType, Persister persister, Object record, boolean sync, IOCompletion callback) throws Exception;
/** * @param packet * @throws Exception */ private void handleAppendAddRecord(final ReplicationAddMessage packet) throws Exception { Journal journalToUse = getJournal(packet.getJournalID()); if (packet.getRecord() == ADD_OPERATION_TYPE.UPDATE) { if (logger.isTraceEnabled()) { logger.trace("Endpoint appendUpdate id = " + packet.getId()); } journalToUse.appendUpdateRecord(packet.getId(), packet.getJournalRecordType(), packet.getRecordData(), noSync); } else { if (logger.isTraceEnabled()) { logger.trace("Endpoint append id = " + packet.getId()); } journalToUse.appendAddRecord(packet.getId(), packet.getJournalRecordType(), packet.getRecordData(), noSync); } }
@Override public void addBindings(PersistedType type, String name, String... address) throws Exception { Pair<PersistedType, String> key = new Pair<>(type, name); long tx = idGenerator.generateID(); PersistedBindings currentBindings = mapBindings.get(key); if (currentBindings != null) { jmsJournal.appendDeleteRecordTransactional(tx, currentBindings.getId()); } else { currentBindings = new PersistedBindings(type, name); } mapBindings.put(key, currentBindings); for (String adItem : address) { currentBindings.addBinding(adItem); } long newId = idGenerator.generateID(); currentBindings.setId(newId); jmsJournal.appendAddRecordTransactional(tx, newId, BINDING_RECORD, currentBindings); jmsJournal.appendCommitRecord(tx, true); }
void appendAddRecordTransactional(long txID, long id, byte recordType, Persister persister, Object record) throws Exception;
/** * @param packet */ private void handleAppendAddTXRecord(final ReplicationAddTXMessage packet) throws Exception { Journal journalToUse = getJournal(packet.getJournalID()); if (packet.getOperation() == ADD_OPERATION_TYPE.UPDATE) { journalToUse.appendUpdateRecordTransactional(packet.getTxId(), packet.getId(), packet.getRecordType(), packet.getRecordData()); } else { journalToUse.appendAddRecordTransactional(packet.getTxId(), packet.getId(), packet.getRecordType(), packet.getRecordData()); } }
/** * @param packet */ private void handleCommitRollback(final ReplicationCommitMessage packet) throws Exception { Journal journalToUse = getJournal(packet.getJournalID()); if (packet.isRollback()) { journalToUse.appendRollbackRecord(packet.getTxId(), noSync); } else { journalToUse.appendCommitRecord(packet.getTxId(), noSync); } }
@Override public void commitBindings(final long txID) throws Exception { bindingsJournal.appendCommitRecord(txID, true); }