Interface Journal

All Superinterfaces:
ActiveMQComponent
All Known Subinterfaces:
TestableJournal
All Known Implementing Classes:
FileWrapperJournal, JDBCJournalImpl, JournalImpl, ReplicatedJournal

public interface Journal extends ActiveMQComponent
Most methods on the journal provide a blocking version where you select the sync mode and a non blocking mode where you pass a completion callback as a parameter.

Notice also that even on the callback methods it's possible to pass the sync mode. That will only make sense on the NIO operations.

  • Method Details

    • setRemoveExtraFilesOnLoad

      void setRemoveExtraFilesOnLoad(boolean removeExtraFilesOnLoad)
    • isRemoveExtraFilesOnLoad

      boolean isRemoveExtraFilesOnLoad()
    • isHistory

      default boolean isHistory()
    • appendAddRecord

      void appendAddRecord(long id, byte recordType, byte[] record, boolean sync) throws Exception
      Throws:
      Exception
    • appendAddRecord

      default void appendAddRecord(long id, byte recordType, EncodingSupport record, boolean sync) throws Exception
      Throws:
      Exception
    • setHistoryFolder

      default Journal setHistoryFolder(File historyFolder, long maxBytes, long period) throws Exception
      Throws:
      Exception
    • getHistoryFolder

      default File getHistoryFolder()
    • appendAddRecord

      void appendAddRecord(long id, byte recordType, Persister persister, Object record, boolean sync) throws Exception
      Throws:
      Exception
    • appendAddRecord

      void appendAddRecord(long id, byte recordType, Persister persister, Object record, boolean sync, IOCompletion completionCallback) throws Exception
      Throws:
      Exception
    • appendAddEvent

      void appendAddEvent(long id, byte recordType, Persister persister, Object record, boolean sync, IOCompletion completionCallback) throws Exception
      An event is data recorded on the journal, but it won't have any weight or deletes. It's always ready to be removed. It is useful on recovery data while in use with backup history journal.
      Throws:
      Exception
    • appendAddRecord

      default void appendAddRecord(long id, byte recordType, EncodingSupport record, boolean sync, IOCompletion completionCallback) throws Exception
      Throws:
      Exception
    • replaceableRecord

      default void replaceableRecord(byte recordType)
    • appendUpdateRecord

      void appendUpdateRecord(long id, byte recordType, byte[] record, boolean sync) throws Exception
      Throws:
      Exception
    • tryAppendUpdateRecord

      void tryAppendUpdateRecord(long id, byte recordType, byte[] record, JournalUpdateCallback updateCallback, boolean sync, boolean replaceableRecord) throws Exception
      Throws:
      Exception
    • appendUpdateRecord

      default void appendUpdateRecord(long id, byte recordType, EncodingSupport record, boolean sync) throws Exception
      Throws:
      Exception
    • tryAppendUpdateRecord

      default void tryAppendUpdateRecord(long id, byte recordType, EncodingSupport record, JournalUpdateCallback updateCallback, boolean sync, boolean replaceableRecord) throws Exception
      Throws:
      Exception
    • appendUpdateRecord

      void appendUpdateRecord(long id, byte recordType, Persister persister, Object record, boolean sync) throws Exception
      Throws:
      Exception
    • tryAppendUpdateRecord

      void tryAppendUpdateRecord(long id, byte recordType, Persister persister, Object record, JournalUpdateCallback updateCallback, boolean sync, boolean replaceableUpdate) throws Exception
      Throws:
      Exception
    • getCriticalErrorListener

      default IOCriticalErrorListener getCriticalErrorListener()
    • setCriticalErrorListener

      default Journal setCriticalErrorListener(IOCriticalErrorListener criticalErrorListener)
    • appendUpdateRecord

      default void appendUpdateRecord(long id, byte recordType, EncodingSupport record, boolean sync, IOCompletion completionCallback) throws Exception
      Throws:
      Exception
    • tryAppendUpdateRecord

      default void tryAppendUpdateRecord(long id, byte recordType, EncodingSupport record, boolean sync, boolean replaceableUpdate, JournalUpdateCallback updateCallback, IOCompletion completionCallback) throws Exception
      Throws:
      Exception
    • appendUpdateRecord

      void appendUpdateRecord(long id, byte recordType, Persister persister, Object record, boolean sync, IOCompletion callback) throws Exception
      Throws:
      Exception
    • tryAppendUpdateRecord

      void tryAppendUpdateRecord(long id, byte recordType, Persister persister, Object record, boolean sync, boolean replaceableUpdate, JournalUpdateCallback updateCallback, IOCompletion callback) throws Exception
      Throws:
      Exception
    • appendDeleteRecord

      void appendDeleteRecord(long id, boolean sync) throws Exception
      Throws:
      Exception
    • tryAppendDeleteRecord

      void tryAppendDeleteRecord(long id, JournalUpdateCallback updateCallback, boolean sync) throws Exception
      Throws:
      Exception
    • appendDeleteRecord

      void appendDeleteRecord(long id, boolean sync, IOCompletion completionCallback) throws Exception
      Throws:
      Exception
    • tryAppendDeleteRecord

      void tryAppendDeleteRecord(long id, boolean sync, JournalUpdateCallback updateCallback, IOCompletion completionCallback) throws Exception
      Throws:
      Exception
    • appendAddRecordTransactional

      void appendAddRecordTransactional(long txID, long id, byte recordType, byte[] record) throws Exception
      Throws:
      Exception
    • appendAddRecordTransactional

      default void appendAddRecordTransactional(long txID, long id, byte recordType, EncodingSupport record) throws Exception
      Throws:
      Exception
    • appendAddRecordTransactional

      void appendAddRecordTransactional(long txID, long id, byte recordType, Persister persister, Object record) throws Exception
      Throws:
      Exception
    • appendUpdateRecordTransactional

      void appendUpdateRecordTransactional(long txID, long id, byte recordType, byte[] record) throws Exception
      Throws:
      Exception
    • appendUpdateRecordTransactional

      default void appendUpdateRecordTransactional(long txID, long id, byte recordType, EncodingSupport record) throws Exception
      Throws:
      Exception
    • appendUpdateRecordTransactional

      void appendUpdateRecordTransactional(long txID, long id, byte recordType, Persister persister, Object record) throws Exception
      Throws:
      Exception
    • appendDeleteRecordTransactional

      void appendDeleteRecordTransactional(long txID, long id, byte[] record) throws Exception
      Throws:
      Exception
    • appendDeleteRecordTransactional

      void appendDeleteRecordTransactional(long txID, long id, EncodingSupport record) throws Exception
      Throws:
      Exception
    • appendDeleteRecordTransactional

      void appendDeleteRecordTransactional(long txID, long id) throws Exception
      Throws:
      Exception
    • appendCommitRecord

      void appendCommitRecord(long txID, boolean sync) throws Exception
      Throws:
      Exception
    • appendCommitRecord

      void appendCommitRecord(long txID, boolean sync, IOCompletion callback) throws Exception
      Throws:
      Exception
    • appendCommitRecord

      void appendCommitRecord(long txID, boolean sync, IOCompletion callback, boolean lineUpContext) throws Exception
      append a commit record to this Journal implementation
      Parameters:
      lineUpContext - if appendCommitRecord should call a storeLineUp. This is because the caller may have already taken into account
      Throws:
      Exception
    • appendPrepareRecord

      void appendPrepareRecord(long txID, EncodingSupport transactionData, boolean sync) throws Exception
      If the system crashed after a prepare was called, it should store information that is required to bring the transaction back to a state it could be committed.
      Parameters:
      transactionData - allows you to store any extra supporting user-data related to the transaction
      Throws:
      Exception
    • appendPrepareRecord

      void appendPrepareRecord(long txID, EncodingSupport transactionData, boolean sync, IOCompletion callback) throws Exception
      Throws:
      Exception
    • appendPrepareRecord

      void appendPrepareRecord(long txID, byte[] transactionData, boolean sync) throws Exception
      Throws:
      Exception
    • appendRollbackRecord

      void appendRollbackRecord(long txID, boolean sync) throws Exception
      Throws:
      Exception
    • appendRollbackRecord

      void appendRollbackRecord(long txID, boolean sync, IOCompletion callback) throws Exception
      Throws:
      Exception
    • load

      JournalLoadInformation load(LoaderCallback reloadManager) throws Exception
      Throws:
      Exception
    • loadInternalOnly

      JournalLoadInformation loadInternalOnly() throws Exception
      Load internal data structures and not expose any data. This is only useful if you're using the journal but not interested on the current data. Useful in situations where the journal is being replicated, copied... etc.
      Throws:
      Exception
    • loadSyncOnly

      Load internal data structures, and remain waiting for synchronization to complete.
      Parameters:
      state - the current state of the journal, this parameter ensures consistency.
      Throws:
      Exception
    • lineUpContext

      void lineUpContext(IOCompletion callback)
    • load

      default JournalLoadInformation load(List<RecordInfo> committedRecords, List<PreparedTransactionInfo> preparedTransactions, TransactionFailureCallback transactionFailure) throws Exception
      Throws:
      Exception
    • load

      JournalLoadInformation load(List<RecordInfo> committedRecords, List<PreparedTransactionInfo> preparedTransactions, TransactionFailureCallback transactionFailure, boolean fixBadTx) throws Exception
      Throws:
      Exception
    • load

      default JournalLoadInformation load(SparseArrayLinkedList<RecordInfo> committedRecords, List<PreparedTransactionInfo> preparedTransactions, TransactionFailureCallback transactionFailure) throws Exception
      Throws:
      Exception
    • load

      JournalLoadInformation load(SparseArrayLinkedList<RecordInfo> committedRecords, List<PreparedTransactionInfo> preparedTransactions, TransactionFailureCallback transactionFailure, boolean fixBadTx) throws Exception
      Throws:
      Exception
    • getAlignment

      int getAlignment() throws Exception
      Throws:
      Exception
    • getNumberOfRecords

      int getNumberOfRecords()
    • getUserVersion

      int getUserVersion()
    • createFilesForBackupSync

      Map<Long,JournalFile> createFilesForBackupSync(long[] fileIds) throws Exception
      Reserves journal file IDs, creates the necessary files for synchronization, and places references to these (reserved for sync) files in the map.

      During the synchronization between a replicating server and replica, we reserve in the replica the journal file IDs used in the replicating server. This call also makes sure the files are created empty without any kind of headers added.

      Parameters:
      fileIds - IDs to reserve for synchronization
      Returns:
      map to be filled with id and journal file pairs for synchronization
      Throws:
      Exception
    • synchronizationLock

      void synchronizationLock()
      Write lock the Journal and write lock the compacting process. Necessary only during replication for backup synchronization.
    • synchronizationUnlock

      void synchronizationUnlock()
      Unlock the Journal and the compacting process.
      See Also:
    • processBackup

      default void processBackup()
      It will rename temporary files and place them on the copy folder, by resotring the original file name.
    • processBackupCleanup

      default void processBackupCleanup()
      It will check max files and max days on files and remove extra files.
    • forceMoveNextFile

      void forceMoveNextFile() throws Exception
      Force the usage of a new JournalFile.
      Throws:
      Exception
    • forceBackup

      default void forceBackup(int timeout, TimeUnit unit) throws Exception
      Throws:
      Exception
    • getDataFiles

      JournalFile[] getDataFiles()
      Returns array with all JournalFiles in use.
      Returns:
      array with all JournalFiles in use
    • getFileFactory

      SequentialFileFactory getFileFactory()
    • getFileSize

      int getFileSize()
    • scheduleCompactAndBlock

      void scheduleCompactAndBlock(int timeout) throws Exception
      This method will start compact using the compactorExecutor and block up to timeout seconds
      Parameters:
      timeout - the timeout in seconds or block forever if <= 0
      Throws:
      Exception
    • replicationSyncPreserveOldFiles

      void replicationSyncPreserveOldFiles()
      Stops any operation that may delete or modify old (stale) data.

      Meant to be used during synchronization of data between a replicating server and its replica. Old files must not be compacted or deleted during synchronization.

    • replicationSyncFinished

      void replicationSyncFinished()
      Restarts file reclaim and compacting on the journal.

      Meant to be used to revert the effect of replicationSyncPreserveOldFiles(). it should only be called once the synchronization of the replica and replicating servers is completed.

    • flush

      void flush() throws Exception
      It will make sure there are no more pending operations on the Executors.
      Throws:
      Exception
    • getMaxRecordSize

      long getMaxRecordSize()
      Returns the max size record that can be stored in the journal.
      Returns:
      the max size record that can be stored in the journal
    • getWarningRecordSize

      long getWarningRecordSize()