Class Transactional.AbstractTransactional

java.lang.Object
org.apache.cassandra.utils.concurrent.Transactional.AbstractTransactional
All Implemented Interfaces:
AutoCloseable, Transactional
Direct Known Subclasses:
CompactionAwareWriter, CompressionMetadata.Writer, LifecycleTransaction, SequentialWriter.TransactionalProxy, SortedTableWriter.AbstractIndexWriter, SSTableRewriter, SSTableTxnWriter, SSTableWriter.TransactionalProxy
Enclosing interface:
Transactional

public abstract static class Transactional.AbstractTransactional extends Object implements Transactional
A simple abstract implementation of Transactional behaviour. In general this should be used as the base class for any transactional implementations. If the implementation wraps any internal Transactional objects, it must proxy every commit() and abort() call onto each internal object to ensure correct behaviour
  • Constructor Details

    • AbstractTransactional

      public AbstractTransactional()
  • Method Details

    • doCommit

      protected abstract Throwable doCommit(Throwable accumulate)
    • doAbort

      protected abstract Throwable doAbort(Throwable accumulate)
    • doPreCleanup

      protected Throwable doPreCleanup(Throwable accumulate)
      perform an exception-safe pre-abort/commit cleanup; this will be run after prepareToCommit (so before commit), and before abort
    • doPostCleanup

      protected Throwable doPostCleanup(Throwable accumulate)
      perform an exception-safe post-abort cleanup
    • doPrepare

      protected abstract void doPrepare()
      Do any preparatory work prior to commit. This method should throw any exceptions that can be encountered during the finalization of the behaviour.
    • commit

      public final Throwable commit(Throwable accumulate)
      commit any effects of this transaction object graph, then cleanup; delegates first to doCommit, then to doCleanup
      Specified by:
      commit in interface Transactional
    • abort

      public final Throwable abort(Throwable accumulate)
      rollback any effects of this transaction object graph; delegates first to doCleanup, then to doAbort
      Specified by:
      abort in interface Transactional
    • close

      public final void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Transactional
    • prepareToCommit

      public final void prepareToCommit()
      The first phase of commit: delegates to doPrepare(), with valid state transition enforcement. This call should be propagated onto any child objects participating in the transaction
      Specified by:
      prepareToCommit in interface Transactional
    • finish

      public Object finish()
      convenience method to both prepareToCommit() and commit() in one operation; only of use to outer-most transactional object of an object graph
    • abort

      public final void abort()
    • commit

      public final void commit()
    • state