Class AssumedCompleteServerTransaction
java.lang.Object
com.arjuna.ats.arjuna.StateManager
com.arjuna.ats.arjuna.coordinator.BasicAction
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator
com.arjuna.ats.internal.jts.orbspecific.coordinator.ArjunaTransactionImple
com.arjuna.ats.internal.jts.orbspecific.interposition.coordinator.ServerTransaction
com.arjuna.ats.internal.jts.recovery.transactions.RecoveredServerTransaction
com.arjuna.ats.internal.jts.recovery.transactions.AssumedCompleteServerTransaction
- All Implemented Interfaces:
ArjunaTransactionOperations
,UidCoordinatorOperations
,Reapable
,RecoveringTransaction
,CoordinatorOperations
,TerminatorOperations
Transaction relic of a committed transaction that did not get committed responses from
all resources/subordinates.
Recovery will not be attempted unless a replay completion is received, in which case it
is reactivated.
Several of the methods of OTS_Transaction could be simplified for an AssumedCompleteServerTransaction (e.g. the status must be committed), but they are kept the same to simplify maintenance
- Version:
- $Id: AssumedCompleteServerTransaction.java 2342 2006-03-30 13:06:17Z $
- Author:
- Peter Furniss (peter.furniss@arjuna.com)
-
Field Summary
Fields inherited from class com.arjuna.ats.internal.jts.recovery.transactions.RecoveredServerTransaction
_originalProcessUid
Fields inherited from class com.arjuna.ats.internal.jts.orbspecific.interposition.coordinator.ServerTransaction
_recoveryCoordinator
Fields inherited from class com.arjuna.ats.internal.jts.orbspecific.coordinator.ArjunaTransactionImple
controlHandle, parentTransaction
Fields inherited from class com.arjuna.ats.arjuna.coordinator.BasicAction
failedList, heuristicList, pendingList, preparedList, readonlyList, savedIntentionList, subordinate, threadStackTraceHistoryList
Fields inherited from class com.arjuna.ats.arjuna.StateManager
modifyingActions, objectModel, objectUid, synchronizationLock, usingActions
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
This T is already assumed complete, so return falsedo not admit to being inactivethe original process must be deceased if we are assumed completeboolean
restore_state
(InputObjectState objectState, int ot) This assumes the various lists are zero length when it is called.boolean
save_state
(OutputObjectState objectState, int ot) Redefined version of save_state and restore_state from StateManager.toString()
Overloads Object.toString()type()
Overloads BasicAction.type()static String
typeName()
typeName differs from original to force the ActionStore to keep AssumedCompleteServerTransactions separateMethods inherited from class com.arjuna.ats.internal.jts.recovery.transactions.RecoveredServerTransaction
addResourceRecord, allCompleted, get_status, getRecoveryStatus, packHeader, removeOldStoreEntry, replayPhase2, unpackHeader
Methods inherited from class com.arjuna.ats.internal.jts.orbspecific.interposition.coordinator.ServerTransaction
doAfterCompletion, doBeforeCompletion, doCommit, doForget, doPhase2Abort, doPhase2Commit, doPrepare, finalize, getSavingUid, preparedStatus, register_synchronization, rollback, setRecoveryCoordinator
Methods inherited from class com.arjuna.ats.internal.jts.orbspecific.coordinator.ArjunaTransactionImple
commit, create_subtransaction, createOTSRecord, createOTSRecord, destroyAction, equals, forgetHeuristics, get_parent_status, get_top_level_status, get_transaction_name, get_txcontext, getControlHandle, getSynchronizations, hash_top_level_tran, hash_transaction, interpositionType, is_ancestor_transaction, is_descendant_transaction, is_related_transaction, is_same_transaction, is_top_level_transaction, register_resource, register_subtran_aware, rollback_only, setControlHandle, topLevelUid, uid
Methods inherited from class com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator
addSynchronization, afterCompletion, afterCompletion, asyncAfterCompletion, beforeCompletion, cancel, end, getDeferredThrowable, outputCapturedStackTraces, recordStackTraces, running, start, start
Methods inherited from class com.arjuna.ats.arjuna.coordinator.BasicAction
Abort, Abort, abortStatus, activate, activate, activeThreads, add, addChildAction, addChildThread, addChildThread, addRecord, async_prepare, Begin, checkForCurrent, childTransactions, commitStatus, createStackTraces, criticalEnd, criticalStart, Current, deactivate, destroy, doAbort, doAbort, doCommit, doCommit, doPrepare, End, finalizeInternal, getDeferredThrowables, getHeuristicDecision, getHierarchy, getStore, hashCode, hierarchyDepth, insertRecord, isAncestor, maintainHeuristics, onePhaseCommit, onePhaseCommit, parent, phase2Abort, phase2Cleanup, phase2Commit, prepare, preventCommit, removeChildAction, removeChildThread, removeChildThread, setCheckedAction, setHeuristicDecision, status, topLevelAction, topLevelActionUid, typeOfAction, updateHeuristic, updateState
Methods inherited from class com.arjuna.ats.arjuna.StateManager
cleanup, createLists, deactivate, deactivate, disable, forgetAction, get_uid, getCreationTimeMillis, getMutex, getObjectModel, getStoreRoot, loadObjectState, lockMutex, modified, objectType, persist, print, rememberAction, setStatus, setupStore, setupStore, setupStore, terminate, tryLockMutex, unlockMutex
Methods inherited from interface com.arjuna.ats.arjuna.coordinator.Reapable
get_uid, preventCommit
-
Constructor Details
-
AssumedCompleteServerTransaction
-
-
Method Details
-
getOriginalStatus
the original process must be deceased if we are assumed complete- Specified by:
getOriginalStatus
in interfaceRecoveringTransaction
- Overrides:
getOriginalStatus
in classRecoveredServerTransaction
-
type
Description copied from class:TwoPhaseCoordinator
Overloads BasicAction.type()- Specified by:
type
in interfaceRecoveringTransaction
- Overrides:
type
in classRecoveredServerTransaction
-
typeName
typeName differs from original to force the ActionStore to keep AssumedCompleteServerTransactions separate -
toString
Description copied from class:BasicAction
Overloads Object.toString()- Overrides:
toString
in classServerTransaction
-
assumeComplete
public boolean assumeComplete()This T is already assumed complete, so return false- Specified by:
assumeComplete
in interfaceRecoveringTransaction
- Overrides:
assumeComplete
in classRecoveredServerTransaction
-
getLastActiveTime
Description copied from class:RecoveredServerTransaction
do not admit to being inactive- Specified by:
getLastActiveTime
in interfaceRecoveringTransaction
- Overrides:
getLastActiveTime
in classRecoveredServerTransaction
-
restore_state
Description copied from class:BasicAction
This assumes the various lists are zero length when it is called.- Overrides:
restore_state
in classServerTransaction
- Returns:
true
if successful,false
otherwise.
-
save_state
Description copied from class:BasicAction
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.- Overrides:
save_state
in classRecoveredServerTransaction
- Returns:
true
if successful,false
otherwise.
-