Class RecoveryRecord

Direct Known Subclasses:
PersistenceRecord

public class RecoveryRecord extends AbstractRecord
  • Field Details

  • Constructor Details

    • RecoveryRecord

      public RecoveryRecord(OutputObjectState os, StateManager sm)
      This constructor is used to create a new instance of a RecoveryRecord.
    • RecoveryRecord

      public RecoveryRecord()
  • Method Details

    • typeIs

      public int typeIs()
      Specified by:
      typeIs in class AbstractRecord
      Returns:
      RecordType value.
    • value

      public Object value()
      Description copied from class: AbstractRecord
      If this abstract record caused a heuristic then it should return an object which implements HeuristicInformation
      Specified by:
      value in class AbstractRecord
      Returns:
      Object to be used to order.
    • setValue

      public void setValue(Object newState)
      Specified by:
      setValue in class AbstractRecord
    • nestedAbort

      public int nestedAbort()
      nestedAbort causes the restore_state function of the object to be invoked passing it the saved ObjectState.
      Specified by:
      nestedAbort in class AbstractRecord
      Returns:
      TwoPhaseOutcome to indicate success/failure.
      See Also:
    • nestedCommit

      public int nestedCommit()
      nestedCommit does nothing since the passing of the state up to the parent action is handled by the record list merging system. In fact since nestedPrepare returns PREPARE_READONLY this function should never actually be called
      Specified by:
      nestedCommit in class AbstractRecord
      Returns:
      TwoPhaseOutcome to indicate success/failure.
      See Also:
    • nestedPrepare

      public int nestedPrepare()
      Description copied from class: AbstractRecord
      A prepare for a nested transaction has occurred.
      Specified by:
      nestedPrepare in class AbstractRecord
      Returns:
      TwoPhaseOutcome to indicate success/failure.
      See Also:
    • topLevelAbort

      public int topLevelAbort()
      topLevelAbort for Recovery records implies the object state should be restored to the saved state exactly like a nested abort.
      Specified by:
      topLevelAbort in class AbstractRecord
      Returns:
      TwoPhaseOutcome to indicate success/failure.
      See Also:
    • topLevelCommit

      public int topLevelCommit()
      topLevelCommit has nothing to do for RecoveryRecords as no changes have been made in the object store. In fact since topLevelPrepare returns PREPARE_READONLY this function should never actually be called
      Specified by:
      topLevelCommit in class AbstractRecord
      Returns:
      TwoPhaseOutcome to indicate success/failure.
      See Also:
    • topLevelPrepare

      public int topLevelPrepare()
      topLevelPrepare can return PREPARE_READONLY to avoid topLevelCommit being called in the action commit case
      Specified by:
      topLevelPrepare in class AbstractRecord
      Returns:
      TwoPhaseOutcome to indicate success/failure.
      See Also:
    • doSave

      public boolean doSave()
      Description copied from class: AbstractRecord
      Should this record be saved in the intentions list? If the record is saved, then it may be recovered later in the event of a failure. Note, however, that the size of the intentions list on disk is critical to the performance of the system (disk I/O is a bottleneck).
      Overrides:
      doSave in class AbstractRecord
      Returns:
      true if it should be saved, false otherwise. false is the default.
    • restore_state

      public boolean restore_state(InputObjectState os, int ot)
      Description copied from class: AbstractRecord
      During recovery, the transaction log is given to the recovery system and it will recreate a transaction instance to perform necessary recovery actions. This transaction will recreate the intentions list and give each recreated AbstractRecord the state that that was saved during transaction persistence. The base class will restore information that it needs from the log. Data items must be unpacked in the same order that they were packed.
      Overrides:
      restore_state in class AbstractRecord
      Returns:
      true if successful, false otherwise.
    • save_state

      public boolean save_state(OutputObjectState os, int ot)
      Description copied from class: AbstractRecord
      When the transaction is required to make the intentions list persistent, it scans the list and asks each record whether or not it requires state to be saved (by calling doSave). If the answer is yes, then save_state is called and the record instance must save enough information to enable it to be restored from that state later. The basic AbstractRecord save_state will save common data that is required by the base class during recovery. If a derived class calls super.save_state then it must be called before packing any other data item.
      Overrides:
      save_state in class AbstractRecord
      Returns:
      true if successful, false otherwise.
    • print

      public void print(PrintWriter strm)
      Description copied from class: AbstractRecord
      Write information about this specific instance to the specified stream.
      Overrides:
      print in class AbstractRecord
      Parameters:
      strm - the stream on which to output.
    • type

      public String type()
      Description copied from class: AbstractRecord
      Re-implementation of abstract methods inherited from base class.
      Overrides:
      type in class AbstractRecord
    • merge

      public void merge(AbstractRecord a)
      Description copied from class: AbstractRecord
      Merge the current record with the one presented.
      Specified by:
      merge in class AbstractRecord
      Parameters:
      a - the record with which to merge.
    • alter

      public void alter(AbstractRecord a)
      Description copied from class: AbstractRecord
      Alter the current record with the one presented.
      Specified by:
      alter in class AbstractRecord
      Parameters:
      a - the record with which to alter.
    • shouldAdd

      public boolean shouldAdd(AbstractRecord a)
      Description copied from class: AbstractRecord
      Should we add the record presented to the intentions list?
      Specified by:
      shouldAdd in class AbstractRecord
      Parameters:
      a - The record to try to add.
      Returns:
      true if the record should be added, false otherwise.
    • shouldAlter

      public boolean shouldAlter(AbstractRecord a)
      Description copied from class: AbstractRecord
      Should we alter the current record with the one presented?
      Specified by:
      shouldAlter in class AbstractRecord
      Parameters:
      a - The record to try to alter.
      Returns:
      true if the record should be altered, false otherwise.
    • shouldMerge

      public boolean shouldMerge(AbstractRecord a)
      Description copied from class: AbstractRecord
      Should we merge the current record with the one presented?
      Specified by:
      shouldMerge in class AbstractRecord
      Parameters:
      a - The record to try to merge.
      Returns:
      true if the record should be merged, false otherwise.
    • shouldReplace

      public boolean shouldReplace(AbstractRecord a)
      Description copied from class: AbstractRecord
      Should we replace the record presented with the current record?
      Specified by:
      shouldReplace in class AbstractRecord
      Parameters:
      a - The record to try to replace.
      Returns:
      true if the record should be replaced, false otherwise.
    • forgetAction

      protected final void forgetAction(boolean commit)