m1.1 | During recovery, the resource manager first does the Resource Manager Start Up procedure described above. As a result of these start-up steps, the resource manager obtains a pointer to the IResourceManager interface. |
m1.2 | The resource manager reads its log file and determines which transactions are in-doubt. For each of these transactions it calls the IResourceManager::Reenlist method. The resource manager passes in both the prepare information it was originally given by the transaction manager and a time-out value which indicates how long the resource manager is willing to wait to learn the outcome of the transaction. |
m2 | The MS DTC proxy communicates this information to the transaction manager. |
m3 | The transaction manager determines the outcome of the transaction, if possible, and returns the transaction outcome to the MS DTC proxy. |
m4 | The MS DTC proxy responds to the resource manager indicating whether the in-doubt transaction was committed or aborted. If the transaction’s outcome cannot be determined before the time-out expires, then a re-enlistment time-out error is returned to the resource manager. |
m5.1 | The resource manager records each transaction’s outcome by writing a commit or abort record in the resource manager log file. |
m5.2 | When the resource manager has determined the outcome of all in-doubt transactions, it invokes the IResourceManager::ReenlistmentComplete method. The resource manager uses this method to inform the transaction manager that the resource manager knows the outcome of all in-doubt transactions in which it is involved. |
m6 | The MS DTC proxy informs the transaction manager that recovery is complete. |
m7 | The transaction manager discards any information it was keeping regarding committed transactions that this resource manager might have been involved in. |