Class XTSATRecoveryManager
java.lang.Object
org.jboss.jbossts.xts.recovery.participant.at.XTSATRecoveryManager
- Direct Known Subclasses:
XTSATRecoveryManagerImple
Abstract class defining API for managing both paritcipant and coordinator recovery
On hteparticipant this is responsible for saving WS-AT participant recovery records
during prepare, deleting them at commit and recreating and reactivating them during
recovery.
On the coordinator side it currently merely records whether coordinator recovery has
copleted its first scan
-
Field Summary
Modifier and TypeFieldDescriptionprotected static final Object
protected static XTSATRecoveryManager
the singleton instance of the recovery manager -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract void
addParticipantRecoveryRecord
(Uid uid, ATParticipantRecoveryRecord participantRecoveryRecord) add a recovered participant record to the table of unrecovered participants which need to be recreated following recoveryabstract boolean
remove any participant recovery record with the supplied id from persistent storageabstract ATParticipantRecoveryRecord
see if a participant recovery record with a given id exists in the table of unrecovered participantsstatic XTSATRecoveryManager
obtain a reference to the WS-AT recovery manager singleton instanceabstract boolean
test whether the first AT coordinator recovery scan has completed.abstract boolean
isParticipantPresent
(Uid uid) test whether the supplied uid identifies an active participant or a recovered but inactive participantabstract boolean
test whether the first AT participant recovery scan has completed.abstract boolean
test whether the first AT subordinate coordinator recovery scan has completed.abstract void
process all entries in the recovered participant map and attempt to recreate the application participant and activate itabstract void
register an application specific recovery module which acts as a helper to recreate a WS-AT durable participant from the participant's recovery data saved at prepareabstract void
record the fact that the first AT coordinator recovery scan has completed.static XTSATRecoveryManager
setRecoveryManager
(XTSATRecoveryManager recoveryManager) set the WS-AT recovery manager singleton instanceabstract void
record the fact that the first AT subordinate coordinator recovery scan has completed.abstract void
unregister an application specific recovery module previously registered as a helper to recretae WS-AT durable participantsabstract boolean
writeParticipantRecoveryRecord
(ATParticipantRecoveryRecord participantRecoveryRecord) save the supplied participant recovery record to persistent storage
-
Field Details
-
theRecoveryManager
the singleton instance of the recovery manager -
lock
-
-
Constructor Details
-
XTSATRecoveryManager
public XTSATRecoveryManager()
-
-
Method Details
-
getRecoveryManager
obtain a reference to the WS-AT recovery manager singleton instance- Returns:
- the singleton instance
-
setRecoveryManager
set the WS-AT recovery manager singleton instance- Parameters:
recoveryManager
- the instance to use as the recovery manager- Returns:
- the singleton previously in use or null if it was not previously set
-
registerRecoveryModule
register an application specific recovery module which acts as a helper to recreate a WS-AT durable participant from the participant's recovery data saved at prepare- Parameters:
module
- the module which will be used to identify and recreate participants for the application- Throws:
NullPointerException
- if the supplied module is null
-
unregisterRecoveryModule
public abstract void unregisterRecoveryModule(XTSATRecoveryModule module) throws NoSuchElementException unregister an application specific recovery module previously registered as a helper to recretae WS-AT durable participants- Parameters:
module
- the module to be unregistered- Throws:
NoSuchElementException
- if the module is not currently registered
-
writeParticipantRecoveryRecord
public abstract boolean writeParticipantRecoveryRecord(ATParticipantRecoveryRecord participantRecoveryRecord) save the supplied participant recovery record to persistent storage- Parameters:
participantRecoveryRecord
-
-
deleteParticipantRecoveryRecord
remove any participant recovery record with the supplied id from persistent storage- Parameters:
id
-
-
isParticipantPresent
test whether the supplied uid identifies an active participant or a recovered but inactive participant- Parameters:
uid
-
-
addParticipantRecoveryRecord
public abstract void addParticipantRecoveryRecord(Uid uid, ATParticipantRecoveryRecord participantRecoveryRecord) add a recovered participant record to the table of unrecovered participants which need to be recreated following recovery- Parameters:
uid
- the uid under which the participant was saved in the file storeparticipantRecoveryRecord
- the in-memory represenattion of the recovery record saved to disk
-
findParticipantRecoveryRecord
see if a participant recovery record with a given id exists in the table of unrecovered participants- Parameters:
id
- the identifier of the participant being sought- Returns:
- the participant recovery record with the supplied id or null if it is not found
-
recoverParticipants
public abstract void recoverParticipants()process all entries in the recovered participant map and attempt to recreate the application participant and activate it -
isParticipantRecoveryStarted
public abstract boolean isParticipantRecoveryStarted()test whether the first AT participant recovery scan has completed. this indicates whether there may or may not still be unknown participant recovery records on disk. If the first scan has not yet completed then a commit or rollback message for an unknown participant must be dropped. If it has then a commit or rollback for an unknown participant must be acknowledged with, respectively, a committed or aborted message. -
isCoordinatorRecoveryStarted
public abstract boolean isCoordinatorRecoveryStarted()test whether the first AT coordinator recovery scan has completed. this indicates whether there may or may not still be unknown AT transcation records on disk. If the first scan has not yet completed then a prepare message for an unknown participant must be dropped. If it has then a perpare for an unknown participant must be acknowledged with a rollback message. -
isSubordinateCoordinatorRecoveryStarted
public abstract boolean isSubordinateCoordinatorRecoveryStarted()test whether the first AT subordinate coordinator recovery scan has completed. this indicates whether there may or may not still be unknown AT subtransaction records on disk. If the first scan has not yet completed then a commit for an unknown subtransaction must raise an exception delaying commit of the parent transaction. -
setCoordinatorRecoveryStarted
public abstract void setCoordinatorRecoveryStarted()record the fact that the first AT coordinator recovery scan has completed. -
setSubordinateCoordinatorRecoveryStarted
public abstract void setSubordinateCoordinatorRecoveryStarted()record the fact that the first AT subordinate coordinator recovery scan has completed.
-