4.3.1 Performing Cold Recovery
This packet sequence is initiated by starting a connection on a transport session between an LU 6.2 implementation and a transaction manager.
The packet sequence starts when an LU 6.2 implementation initiates a connection by using CONNTYPE_TXUSER_DTCLURECOVERYINITIATEDBYDTC.
|
Field |
Value |
Value description |
|---|---|---|
|
MsgTag |
0x00000005 |
MTAG_CONNECTION_REQ |
|
fIsMaster |
0x00000001 |
1 |
|
dwConnectionId |
0x00000003 |
3 |
|
dwUserMsgType |
0x00000020 |
CONNTYPE_TXUSER_DTCLURECOVERYINITIATEDBYDTC |
|
dwcbVarLenData |
0x00000000 |
0 |
|
dwReserved1 |
0x00000000 |
0 |
The LU 6.2 implementation then sends a TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_GETWORK user message to the transaction manager that specifies the LU Name Pair with which the LU 6.2 implementation registered as the recovery process. For this example, the LU 6.2 implementation requests to obtain any recovery work related to the LU Name Pair of 58 bytes that contains the Unicode characters "L"MSFT.L3160200 | MSFT.WNWCI22A"".
|
Field |
Value |
Value description |
|---|---|---|
|
MsgTag |
0x00000FFF |
MTAG_USER_MESSAGE |
|
fIsMaster |
0x00000001 |
1 |
|
dwConnectionId |
0x00000003 |
3 |
|
dwUserMsgType |
0x00004401 |
TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_GETWORK |
|
dwcbVarLenData |
0x00000040 |
64 |
|
dwReserved1 |
0xCD64CD64 |
dwReserved1:0xCD64CD64 |
|
LuNamePair: cbLength |
0x0000003A |
58 |
|
LuNamePair: rgbBlob |
0x0053004D 0x00540046 0x004C002E 0x00310033 0x00300036 0x00300032 0x00200030 0x0020007C 0x0053004D 0x00540046 0x0057002E 0x0057004E 0x00490043 0x00320032 0x00000041 |
L"MSFT.L3160200 | MSFT.WNWCI22A" |
When the transaction manager receives the TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_GETWORK user message from the LU 6.2 implementation, it attempts to determine whether there is any recovery work to do for the LU Name Pair. In this example, the transaction manager has never performed recovery with respect to the LU Name Pair, and sends a TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_WORK_TRANS user message to request cold recovery (Xln = DTCLUXLN_COLD). In this example, the message specifies a recovery sequence number set to 1, the dwProtocol set to 0, the transaction manager's log name ("A4201087-FED1-4F15-B06B-9E91CA89B11C"), and an empty RemoteLog Name.
|
Field |
Value |
Value description |
|---|---|---|
|
MsgTag |
0x00000FFF |
MTAG_USER_MESSAGE |
|
fIsMaster |
0x00000000 |
0 |
|
dwConnectionId |
0x00000003 |
3 |
|
dwUserMsgType |
0x00004404 |
TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_WORK_TRANS |
|
dwcbVarLenData |
0x00000038 |
56 |
|
dwReserved1 |
0xCD64CD64 |
dwReserved1:0xCD64CD64 |
|
lRecoverySeqNum |
0x00000001 |
1 |
|
Xln |
0x00000001 |
DTCLUXLN_COLD |
|
dwProtocol |
0x00000000 |
0 |
|
OurLogName: cbLength |
0x00000024 |
36 |
|
OurLogName: rgbBlob |
0x30323461 0x37383031 0x6465662D 0x66342D31 0x622D3531 0x2D623630 0x31396539 0x39386163 0x63313162 |
"A4201087-FED1-4F15-B06B-9E91CA89B11C" |
|
RemoteLogName: cbLength |
0x00000000 |
0 |
When the LU 6.2 implementation receives the TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_WORK_TRANS user message, the LU 6.2 implementation attempts to exchange log names with the remote LU. For this example, the exchange is successful and the LU 6.2 implementation sends a TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_THEIR_XLN_RESPONSE user message to the transaction manager that specifies cold recovery ("Xln = DTCLUXLN_COLD"), and an 8-byte RemoteLogName (EBCDIC("0705CE30")).
|
Field |
Value |
Value description |
|---|---|---|
|
MsgTag |
0x00000FFF |
MTAG_USER_MESSAGE |
|
fIsMaster |
0x00000001 |
1 |
|
dwConnectionId |
0x00000003 |
3 |
|
dwUserMsgType |
0x00004410 |
TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_THEIR_XLN_RESPONSE |
|
dwcbVarLenData |
0x00000014 |
20 |
|
dwReserved1 |
0xCD64CD64 |
dwReserved1:0xCD64CD64 |
|
Xln |
0x00000001 |
DTCLUXLN_COLD |
|
dwProtocol |
0x00000000 |
0 |
|
RemoteLogName: cbLength |
0x00000008 |
8 |
|
RemoteLogName: rgbBlob |
0xF5F0F7F0 0xF0F3C5C3 |
EBCDIC("0705CE30") |
When the transaction manager receives the TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_THEIR_XLN_RESPONSE user message, it verifies that the reported state of the remote LU is consistent with the transaction manager's state. For this example, the transaction manager sends a TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_CONFIRMATION_FOR_THEIR_XLN user message that specifies that it confirms the message (XlnConfirmation = DTCLUXLNCONFIRMATION_CONFIRM).
|
Field |
Value |
Value description |
|---|---|---|
|
MsgTag |
0x00000FFF |
MTAG_USER_MESSAGE |
|
fIsMaster |
0x00000000 |
0 |
|
dwConnectionId |
0x00000003 |
3 |
|
dwUserMsgType |
0x00004411 |
TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_CONFIRMATION_FOR_THEIR_XLN |
|
dwcbVarLenData |
0x00000004 |
4 |
|
dwReserved1 |
0xCD64CD64 |
dwReserved1: 0xCD64CD64 |
|
XlnConfirmation |
0x00000001 |
DTCLUXLNCONFIRMATION_CONFIRM |
When the LU 6.2 implementation receives the TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_CONFIRMATION_FOR_THEIR_XLN user message, it sends a TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_CHECK_FOR_COMPARESTATES user message to the transaction manager to query whether recovery work is required for an LUW that involves the LU Name Pair.
|
Field |
Value |
Value description |
|---|---|---|
|
MsgTag |
0x00000FFF |
MTAG_USER_MESSAGE |
|
fIsMaster |
0x00000001 |
1 |
|
dwConnectionId |
0x00000003 |
3 |
|
dwUserMsgType |
0x00004413 |
TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_CHECK_FOR_COMPARESTATES |
|
dwcbVarLenData |
0x00000000 |
0 |
|
dwReserved1 |
0xCD64CD64 |
dwReserved1: 0xCD64CD64 |
When the transaction manager receives the TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_CHECK_FOR_COMPARESTATES user message, it checks to see if a comparison of local and remote LUW state is required. For this example, the transaction manager sends a TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_NO_COMPARESTATES user message to the LU 6.2 implementation.
|
Field |
Value |
Value description |
|---|---|---|
|
MsgTag |
0x00000FFF |
MTAG_USER_MESSAGE |
|
fIsMaster |
0x00000000 |
0 |
|
dwConnectionId |
0x00000003 |
3 |
|
dwUserMsgType |
0x00004415 |
TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_NO_COMPARESTATES |
|
dwcbVarLenData |
0x00000000 |
0 |
|
dwReserved1 |
0xCD64CD64 |
dwReserved1: 0xCD64CD64 |
When the LU 6.2 implementation receives the TXUSER_DTCLURECOVERYINITIATEDBYDTC_MTAG_NO_COMPARESTATES user message, no further messages are sent that use this connection and the LU 6.2 implementation initiates the disconnect sequence.