Class JDBCJournalImpl

java.lang.Object
org.apache.activemq.artemis.jdbc.store.drivers.AbstractJDBCDriver
org.apache.activemq.artemis.jdbc.store.journal.JDBCJournalImpl
All Implemented Interfaces:
org.apache.activemq.artemis.core.journal.Journal, org.apache.activemq.artemis.core.server.ActiveMQComponent

public class JDBCJournalImpl extends AbstractJDBCDriver implements org.apache.activemq.artemis.core.journal.Journal
  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.apache.activemq.artemis.core.journal.Journal

    org.apache.activemq.artemis.core.journal.Journal.JournalState
  • Field Summary

    Fields inherited from class AbstractJDBCDriver

    connectionProvider, sqlProvider
  • Constructor Summary

    Constructors
    Constructor
    Description
    JDBCJournalImpl(JDBCConnectionProvider connectionProvider, SQLProvider provider, ScheduledExecutorService scheduledExecutorService, Executor completeExecutor, org.apache.activemq.artemis.core.io.IOCriticalErrorListener criticalIOErrorListener, long syncDelay)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    appendAddEvent(long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion completionCallback)
     
    void
    appendAddRecord(long id, byte recordType, byte[] record, boolean sync)
     
    void
    appendAddRecord(long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record, boolean sync)
     
    void
    appendAddRecord(long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion completionCallback)
     
    void
    appendAddRecordTransactional(long txID, long id, byte recordType, byte[] record)
     
    void
    appendAddRecordTransactional(long txID, long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record)
     
    void
    appendCommitRecord(long txID, boolean sync)
     
    void
    appendCommitRecord(long txID, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion callback)
     
    void
    appendCommitRecord(long txID, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion callback, boolean lineUpContext)
     
    void
    appendDeleteRecord(long id, boolean sync)
     
    void
    appendDeleteRecord(long id, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion completionCallback)
     
    void
    appendDeleteRecordTransactional(long txID, long id)
     
    void
    appendDeleteRecordTransactional(long txID, long id, byte[] record)
     
    void
    appendDeleteRecordTransactional(long txID, long id, org.apache.activemq.artemis.core.journal.EncodingSupport record)
     
    void
    appendPrepareRecord(long txID, byte[] transactionData, boolean sync)
     
    void
    appendPrepareRecord(long txID, org.apache.activemq.artemis.core.journal.EncodingSupport transactionData, boolean sync)
     
    void
    appendPrepareRecord(long txID, org.apache.activemq.artemis.core.journal.EncodingSupport transactionData, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion callback)
     
    void
    appendRollbackRecord(long txID, boolean sync)
     
    void
    appendRollbackRecord(long txID, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion callback)
     
    void
    appendUpdateRecord(long id, byte recordType, byte[] record, boolean sync)
     
    void
    appendUpdateRecord(long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record, boolean sync)
     
    void
    appendUpdateRecord(long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion completionCallback)
     
    void
    appendUpdateRecordTransactional(long txID, long id, byte recordType, byte[] record)
     
    void
    appendUpdateRecordTransactional(long txID, long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record)
     
    Map<Long, org.apache.activemq.artemis.core.journal.impl.JournalFile>
    createFilesForBackupSync(long[] fileIds)
     
    protected void
     
    void
     
    void
     
    void
     
    int
     
    org.apache.activemq.artemis.core.journal.impl.JournalFile[]
     
    org.apache.activemq.artemis.core.io.SequentialFileFactory
     
    int
     
    long
    The max size record that can be stored in the journal
    int
     
    int
     
    long
     
    void
    handleException(List<org.apache.activemq.artemis.jdbc.store.journal.JDBCJournalRecord> recordRef, Throwable e)
    public for tests only, not through API
    boolean
     
    boolean
     
    void
    lineUpContext(org.apache.activemq.artemis.core.journal.IOCompletion callback)
     
    org.apache.activemq.artemis.core.journal.JournalLoadInformation
    load(List<org.apache.activemq.artemis.core.journal.RecordInfo> committedRecords, List<org.apache.activemq.artemis.core.journal.PreparedTransactionInfo> preparedTransactions, org.apache.activemq.artemis.core.journal.TransactionFailureCallback failureCallback, boolean fixBadTX)
     
    org.apache.activemq.artemis.core.journal.JournalLoadInformation
    load(org.apache.activemq.artemis.core.journal.LoaderCallback reloadManager)
     
    org.apache.activemq.artemis.core.journal.JournalLoadInformation
    load(org.apache.activemq.artemis.utils.collections.SparseArrayLinkedList<org.apache.activemq.artemis.core.journal.RecordInfo> committedRecords, List<org.apache.activemq.artemis.core.journal.PreparedTransactionInfo> preparedTransactions, org.apache.activemq.artemis.core.journal.TransactionFailureCallback failureCallback, boolean fixBadTX)
     
    org.apache.activemq.artemis.core.journal.JournalLoadInformation
     
    org.apache.activemq.artemis.core.journal.JournalLoadInformation
    loadSyncOnly(org.apache.activemq.artemis.core.journal.Journal.JournalState state)
     
    protected void
     
    void
     
    void
     
    void
     
    void
    setRemoveExtraFilesOnLoad(boolean removeExtraFilesOnLoad)
     
    void
     
    void
     
    void
    stop(boolean sync)
     
    int
     
    final void
     
    final void
     
    void
    tryAppendDeleteRecord(long id, boolean sync, org.apache.activemq.artemis.core.journal.JournalUpdateCallback updateCallback, org.apache.activemq.artemis.core.journal.IOCompletion completionCallback)
     
    void
    tryAppendDeleteRecord(long id, org.apache.activemq.artemis.core.journal.JournalUpdateCallback updateCallback, boolean sync)
     
    void
    tryAppendUpdateRecord(long id, byte recordType, byte[] record, org.apache.activemq.artemis.core.journal.JournalUpdateCallback updateCallback, boolean sync, boolean replaceableRecord)
     
    void
    tryAppendUpdateRecord(long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record, boolean sync, boolean replaceableUpdate, org.apache.activemq.artemis.core.journal.JournalUpdateCallback updateCallback, org.apache.activemq.artemis.core.journal.IOCompletion completionCallback)
     
    void
    tryAppendUpdateRecord(long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record, org.apache.activemq.artemis.core.journal.JournalUpdateCallback updateCallback, boolean sync, boolean replaceableUpdate)
     

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.apache.activemq.artemis.core.server.ActiveMQComponent

    asyncStop

    Methods inherited from interface org.apache.activemq.artemis.core.journal.Journal

    appendAddRecord, appendAddRecord, appendAddRecordTransactional, appendUpdateRecord, appendUpdateRecord, appendUpdateRecordTransactional, forceBackup, getCriticalErrorListener, getHistoryFolder, isHistory, load, load, processBackup, processBackupCleanup, replaceableRecord, setCriticalErrorListener, setHistoryFolder, tryAppendUpdateRecord, tryAppendUpdateRecord
  • Constructor Details

  • Method Details

    • setRemoveExtraFilesOnLoad

      public void setRemoveExtraFilesOnLoad(boolean removeExtraFilesOnLoad)
      Specified by:
      setRemoveExtraFilesOnLoad in interface org.apache.activemq.artemis.core.journal.Journal
    • isRemoveExtraFilesOnLoad

      public boolean isRemoveExtraFilesOnLoad()
      Specified by:
      isRemoveExtraFilesOnLoad in interface org.apache.activemq.artemis.core.journal.Journal
    • appendAddEvent

      public void appendAddEvent(long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion completionCallback) throws Exception
      Specified by:
      appendAddEvent in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • start

      public void start() throws SQLException
      Specified by:
      start in interface org.apache.activemq.artemis.core.server.ActiveMQComponent
      Overrides:
      start in class AbstractJDBCDriver
      Throws:
      SQLException
    • flush

      public void flush() throws Exception
      Specified by:
      flush in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • getMaxRecordSize

      public long getMaxRecordSize()
      The max size record that can be stored in the journal
      Specified by:
      getMaxRecordSize in interface org.apache.activemq.artemis.core.journal.Journal
    • getWarningRecordSize

      public long getWarningRecordSize()
      Specified by:
      getWarningRecordSize in interface org.apache.activemq.artemis.core.journal.Journal
    • createSchema

      protected void createSchema() throws SQLException
      Specified by:
      createSchema in class AbstractJDBCDriver
      Throws:
      SQLException
    • prepareStatements

      protected void prepareStatements()
      Specified by:
      prepareStatements in class AbstractJDBCDriver
    • stop

      public void stop() throws SQLException
      Specified by:
      stop in interface org.apache.activemq.artemis.core.server.ActiveMQComponent
      Overrides:
      stop in class AbstractJDBCDriver
      Throws:
      SQLException
    • stop

      public void stop(boolean sync) throws SQLException
      Throws:
      SQLException
    • destroy

      public void destroy() throws Exception
      Overrides:
      destroy in class AbstractJDBCDriver
      Throws:
      Exception
    • sync

      public int sync()
    • handleException

      public void handleException(List<org.apache.activemq.artemis.jdbc.store.journal.JDBCJournalRecord> recordRef, Throwable e)
      public for tests only, not through API
    • appendAddRecord

      public void appendAddRecord(long id, byte recordType, byte[] record, boolean sync) throws Exception
      Specified by:
      appendAddRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendAddRecord

      public void appendAddRecord(long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record, boolean sync) throws Exception
      Specified by:
      appendAddRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendAddRecord

      public void appendAddRecord(long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion completionCallback) throws Exception
      Specified by:
      appendAddRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendUpdateRecord

      public void appendUpdateRecord(long id, byte recordType, byte[] record, boolean sync) throws Exception
      Specified by:
      appendUpdateRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • tryAppendUpdateRecord

      public void tryAppendUpdateRecord(long id, byte recordType, byte[] record, org.apache.activemq.artemis.core.journal.JournalUpdateCallback updateCallback, boolean sync, boolean replaceableRecord) throws Exception
      Specified by:
      tryAppendUpdateRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendUpdateRecord

      public void appendUpdateRecord(long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record, boolean sync) throws Exception
      Specified by:
      appendUpdateRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • tryAppendUpdateRecord

      public void tryAppendUpdateRecord(long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record, org.apache.activemq.artemis.core.journal.JournalUpdateCallback updateCallback, boolean sync, boolean replaceableUpdate) throws Exception
      Specified by:
      tryAppendUpdateRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendUpdateRecord

      public void appendUpdateRecord(long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion completionCallback) throws Exception
      Specified by:
      appendUpdateRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • tryAppendUpdateRecord

      public void tryAppendUpdateRecord(long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record, boolean sync, boolean replaceableUpdate, org.apache.activemq.artemis.core.journal.JournalUpdateCallback updateCallback, org.apache.activemq.artemis.core.journal.IOCompletion completionCallback) throws Exception
      Specified by:
      tryAppendUpdateRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendDeleteRecord

      public void appendDeleteRecord(long id, boolean sync) throws Exception
      Specified by:
      appendDeleteRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • tryAppendDeleteRecord

      public void tryAppendDeleteRecord(long id, org.apache.activemq.artemis.core.journal.JournalUpdateCallback updateCallback, boolean sync) throws Exception
      Specified by:
      tryAppendDeleteRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendDeleteRecord

      public void appendDeleteRecord(long id, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion completionCallback) throws Exception
      Specified by:
      appendDeleteRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • tryAppendDeleteRecord

      public void tryAppendDeleteRecord(long id, boolean sync, org.apache.activemq.artemis.core.journal.JournalUpdateCallback updateCallback, org.apache.activemq.artemis.core.journal.IOCompletion completionCallback) throws Exception
      Specified by:
      tryAppendDeleteRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendAddRecordTransactional

      public void appendAddRecordTransactional(long txID, long id, byte recordType, byte[] record) throws Exception
      Specified by:
      appendAddRecordTransactional in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendAddRecordTransactional

      public void appendAddRecordTransactional(long txID, long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record) throws Exception
      Specified by:
      appendAddRecordTransactional in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendUpdateRecordTransactional

      public void appendUpdateRecordTransactional(long txID, long id, byte recordType, byte[] record) throws Exception
      Specified by:
      appendUpdateRecordTransactional in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendUpdateRecordTransactional

      public void appendUpdateRecordTransactional(long txID, long id, byte recordType, org.apache.activemq.artemis.core.persistence.Persister persister, Object record) throws Exception
      Specified by:
      appendUpdateRecordTransactional in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendDeleteRecordTransactional

      public void appendDeleteRecordTransactional(long txID, long id, byte[] record) throws Exception
      Specified by:
      appendDeleteRecordTransactional in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendDeleteRecordTransactional

      public void appendDeleteRecordTransactional(long txID, long id, org.apache.activemq.artemis.core.journal.EncodingSupport record) throws Exception
      Specified by:
      appendDeleteRecordTransactional in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendDeleteRecordTransactional

      public void appendDeleteRecordTransactional(long txID, long id) throws Exception
      Specified by:
      appendDeleteRecordTransactional in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendCommitRecord

      public void appendCommitRecord(long txID, boolean sync) throws Exception
      Specified by:
      appendCommitRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendCommitRecord

      public void appendCommitRecord(long txID, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion callback) throws Exception
      Specified by:
      appendCommitRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendCommitRecord

      public void appendCommitRecord(long txID, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion callback, boolean lineUpContext) throws Exception
      Specified by:
      appendCommitRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendPrepareRecord

      public void appendPrepareRecord(long txID, org.apache.activemq.artemis.core.journal.EncodingSupport transactionData, boolean sync) throws Exception
      Specified by:
      appendPrepareRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendPrepareRecord

      public void appendPrepareRecord(long txID, org.apache.activemq.artemis.core.journal.EncodingSupport transactionData, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion callback) throws Exception
      Specified by:
      appendPrepareRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendPrepareRecord

      public void appendPrepareRecord(long txID, byte[] transactionData, boolean sync) throws Exception
      Specified by:
      appendPrepareRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendRollbackRecord

      public void appendRollbackRecord(long txID, boolean sync) throws Exception
      Specified by:
      appendRollbackRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • appendRollbackRecord

      public void appendRollbackRecord(long txID, boolean sync, org.apache.activemq.artemis.core.journal.IOCompletion callback) throws Exception
      Specified by:
      appendRollbackRecord in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • load

      public org.apache.activemq.artemis.core.journal.JournalLoadInformation load(org.apache.activemq.artemis.core.journal.LoaderCallback reloadManager)
      Specified by:
      load in interface org.apache.activemq.artemis.core.journal.Journal
    • loadInternalOnly

      public org.apache.activemq.artemis.core.journal.JournalLoadInformation loadInternalOnly() throws Exception
      Specified by:
      loadInternalOnly in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • loadSyncOnly

      public org.apache.activemq.artemis.core.journal.JournalLoadInformation loadSyncOnly(org.apache.activemq.artemis.core.journal.Journal.JournalState state) throws Exception
      Specified by:
      loadSyncOnly in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • lineUpContext

      public void lineUpContext(org.apache.activemq.artemis.core.journal.IOCompletion callback)
      Specified by:
      lineUpContext in interface org.apache.activemq.artemis.core.journal.Journal
    • load

      public org.apache.activemq.artemis.core.journal.JournalLoadInformation load(org.apache.activemq.artemis.utils.collections.SparseArrayLinkedList<org.apache.activemq.artemis.core.journal.RecordInfo> committedRecords, List<org.apache.activemq.artemis.core.journal.PreparedTransactionInfo> preparedTransactions, org.apache.activemq.artemis.core.journal.TransactionFailureCallback failureCallback, boolean fixBadTX) throws Exception
      Specified by:
      load in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • load

      public org.apache.activemq.artemis.core.journal.JournalLoadInformation load(List<org.apache.activemq.artemis.core.journal.RecordInfo> committedRecords, List<org.apache.activemq.artemis.core.journal.PreparedTransactionInfo> preparedTransactions, org.apache.activemq.artemis.core.journal.TransactionFailureCallback failureCallback, boolean fixBadTX) throws Exception
      Specified by:
      load in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • getAlignment

      public int getAlignment() throws Exception
      Specified by:
      getAlignment in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • getNumberOfRecords

      public int getNumberOfRecords()
      Specified by:
      getNumberOfRecords in interface org.apache.activemq.artemis.core.journal.Journal
    • getUserVersion

      public int getUserVersion()
      Specified by:
      getUserVersion in interface org.apache.activemq.artemis.core.journal.Journal
    • createFilesForBackupSync

      public Map<Long, org.apache.activemq.artemis.core.journal.impl.JournalFile> createFilesForBackupSync(long[] fileIds) throws Exception
      Specified by:
      createFilesForBackupSync in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • synchronizationLock

      public final void synchronizationLock()
      Specified by:
      synchronizationLock in interface org.apache.activemq.artemis.core.journal.Journal
    • synchronizationUnlock

      public final void synchronizationUnlock()
      Specified by:
      synchronizationUnlock in interface org.apache.activemq.artemis.core.journal.Journal
    • forceMoveNextFile

      public void forceMoveNextFile() throws Exception
      Specified by:
      forceMoveNextFile in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • getDataFiles

      public org.apache.activemq.artemis.core.journal.impl.JournalFile[] getDataFiles()
      Specified by:
      getDataFiles in interface org.apache.activemq.artemis.core.journal.Journal
    • getFileFactory

      public org.apache.activemq.artemis.core.io.SequentialFileFactory getFileFactory()
      Specified by:
      getFileFactory in interface org.apache.activemq.artemis.core.journal.Journal
    • getFileSize

      public int getFileSize()
      Specified by:
      getFileSize in interface org.apache.activemq.artemis.core.journal.Journal
    • scheduleCompactAndBlock

      public void scheduleCompactAndBlock(int timeout) throws Exception
      Specified by:
      scheduleCompactAndBlock in interface org.apache.activemq.artemis.core.journal.Journal
      Throws:
      Exception
    • replicationSyncPreserveOldFiles

      public void replicationSyncPreserveOldFiles()
      Specified by:
      replicationSyncPreserveOldFiles in interface org.apache.activemq.artemis.core.journal.Journal
    • replicationSyncFinished

      public void replicationSyncFinished()
      Specified by:
      replicationSyncFinished in interface org.apache.activemq.artemis.core.journal.Journal
    • isStarted

      public boolean isStarted()
      Specified by:
      isStarted in interface org.apache.activemq.artemis.core.server.ActiveMQComponent