Javadoc
Redefined version of save_state and restore_state from StateManager.
Normal operation (no crashes):
BasicAction.save_state is called after a successful prepare. This causes
and BasicAction object to be saved in the object store. This object
contains primarily the "intentions list" of the BasicAction. After
successfully completing phase 2 of the commit protocol, the BasicAction
object is deleted from the store.
Failure cases:
If a server crashes after successfully preparing, then upon recovery the
action must be resolved (either committed or aborted) depending upon
whether the co-ordinating atomic action committed or aborted. Upon server
recovery, the crash recovery mechanism detects ServerBasicAction objects
in the object store and attempts to activate the BasicAction object of
the co-ordinating action. If this is successful then the SAA is committed
else aborted.
If, when processing phase 2 of the commit protocol, the co-ordinator
experiences a failure to commit from one of the records then the
BasicAction object is NOT deleted. It is rewritten when a new state which
contains a list of the records that failed during phase 2 commit. This
list is called the "failedList".
The crash recovery manager will detect local BasicAction objects in
addition to SAA objects in the objectstore. An attempt will be made to
commit these actions. If the action contained a call to a now dead
server, this action can never be resolved and the AA object can never be
removed. However, if the action is purely local then after the processing
is complete the removed by crash recovery.