RollbackRequest is the entry point for all compensating
handler code for provider
procedures.
When a transaction
fails and must be rolled back, the provisioning
engine calls RollbackRequest once for every ProcessRequest
call that had already succeeded prior to the error.
RollbackRequest calls occur in the opposite order than the
original ProcessRequest calls.
Custom providers must implement compensating handler code in
RollbackRequest for every procedure marked as type "write"
or "two-phase" in the procedure definition. For more information on
procedure types, see Transactions.
The procedure's executeData nodes
are included in rollback only if the procedure node's
saveDataForRollback attribute is set to "1" (true) in the
procedure definition.
Whenever ProcessRequest
returns an error code, the engine considers this a failure,
although the transaction may not roll back immediately, depending
on the error
handling, if any, implemented in the procedure. The provider is
responsible for cleaning up data and rolling back changes for the
failed call because the engine will not call RollbackRequest
for the failed procedure. (However, it will call
RollbackRequest for all the successfully-executed procedure
calls.).
Whenever RollbackRequest returns an error, it means the
provider was unable to roll back changes completely, so some data
may be in an inconsistent state.
C++ Syntax
HRESULT RollbackRequest (
IXMLDOMNode *pXML
);