Class DefaultJournalService

java.lang.Object
com.atlassian.confluence.impl.journal.DefaultJournalService
All Implemented Interfaces:
JournalService
Direct Known Subclasses:
DefaultIndexJournalService

public class DefaultJournalService extends Object implements JournalService
This is the default implementation of JournalService.
Since:
5.6
  • Constructor Details

    • DefaultJournalService

      public DefaultJournalService(JournalManager journalManager)
  • Method Details

    • enqueue

      public long enqueue(@NonNull JournalEntry entry) throws ServiceException
      Description copied from interface: JournalService
      Adds the given entry to a journal.

      New journal is automatically created if a journal with the given name does not exists.

      Specified by:
      enqueue in interface JournalService
      Parameters:
      entry - entry to persist
      Returns:
      id generated for the entry
      Throws:
      ServiceException - if the entry could not be persisted
    • processNewEntries

      public <V> V processNewEntries(@NonNull JournalIdentifier journalId, int maxEntries, @NonNull Function<Iterable<JournalEntry>,EntryProcessorResult<V>> entryProcessor) throws ServiceException
      Description copied from interface: JournalService
      Processes journal entries that were added since the last time this method was called for this journal on this cluster node.

      This method does not return entries that were added immediately before calling this method. Use JournalService.waitForRecentEntriesToBecomeVisible() for ensuring these entries will be included.

      This method can miss some entries due to identifier assignment and entry insertion not being an atomic operation. The risk of missed entries can be reduced by creating new entries as close to transaction commit as possible.

      If entryProcessor throws an exception, the same entries will be returned again when this method is next called for this journal on this cluster node.

      New journal is automatically created if a journal with the given name does not exists.

      Specified by:
      processNewEntries in interface JournalService
      Parameters:
      journalId - only entries with this journal id will be returned
      maxEntries - maximum number of entries to process
      entryProcessor - function that will process entries that were added since the last time
      Returns:
      result of entryProcessor
      Throws:
      ServiceException - if entries could not be fetched or the journal state could not be saved
    • waitForRecentEntriesToBecomeVisible

      public void waitForRecentEntriesToBecomeVisible() throws InterruptedException
      Description copied from interface: JournalService
      Waits long enough to ensure that entries added before calling this method will be available to subsequent call to JournalService.processNewEntries(JournalIdentifier, int, Function).
      Specified by:
      waitForRecentEntriesToBecomeVisible in interface JournalService
      Throws:
      InterruptedException - if the thread got interrupted
    • peek

      public Iterable<JournalEntry> peek(@NonNull JournalIdentifier journalId, int maxEntries) throws ServiceException
      Description copied from interface: JournalService
      Return a copy of journal entries that are waiting to be processed.
      Specified by:
      peek in interface JournalService
      Parameters:
      journalId - only entries with this journal id will be returned
      maxEntries - maximum number of entries to return
      Returns:
      a copy of journal entries that are waiting to be processed
      Throws:
      ServiceException - if entries could not be fetched
    • reset

      public void reset(@NonNull JournalIdentifier journalId) throws ServiceException
      Description copied from interface: JournalService
      Resets the state of the journal so that all entries currently in the journal will be skipped.
      Specified by:
      reset in interface JournalService
      Parameters:
      journalId - identifier of the journal to reset
      Throws:
      ServiceException - if the reset fails
    • countEntries

      public int countEntries(@NonNull JournalIdentifier journalId) throws ServiceException
      Description copied from interface: JournalService
      Counts the number of entries in a journal.
      Specified by:
      countEntries in interface JournalService
      Parameters:
      journalId - identifier of the journal
      Throws:
      ServiceException - if entries could not be counted