[Progress Communities] [Progress OpenEdge ABL] Forum Post: RE: Transactions and Undos. Novel

Status
Not open for further replies.
G

George Potemkin

Guest
> 6) the “jump notes” are used during rollback to skip over bi blocks that do not contain notes written by the transaction being rolled back. I understand that recovery notes of the same transaction are backward linked: each note knows the location in BI file for its predecessor. And, of course, sometimes it’s not enough to undo a transaction. Are the “jump notes” related to the following scenario? 10:29:31: Transaction created new record and its three index keys (really it created two records but I cut the information because it does not matter): Trid: 1002166296 Fri Feb 22 10:29:31 2019. (2598) Trid: 1002166296 User Id: XXXXXXX (12531) Trid: 1002166296 code = RL_TBGN version = 1 (12528) Trid: 1002166296 dbkey = 0 update counter = 0 (12530) Trid: 1002166296 code = RL_LOGOP_START version = 1 (12528) Trid: 1002166296 dbkey = 0 update counter = 0 (12530) Trid: 1002166296 code = RL_RMCR version = 2 (12528) Trid: 1002166296 area = 7 dbkey = 42707187456 update counter = 32 (12529) Trid: 1002166296 code = RL_LOGOP_END version = 1 (12528) Trid: 1002166296 dbkey = 0 update counter = 0 (12530) Trid: 1002166296 code = RL_CXINS version = 2 (12528) Trid: 1002166296 area = 8 dbkey = 342214230 update counter = 1039 (12529) Trid: 1002166296 code = RL_CXINS version = 2 (12528) Trid: 1002166296 area = 8 dbkey = 289733725 update counter = 8530 (12529) Trid: 1002166296 code = RL_CXINS version = 2 (12528) Trid: 1002166296 area = 8 dbkey = 44460085 update counter = 550 (12529) Trid: 1002166296 code = RL_CXINS version = 2 (12528) Trid: 1002166296 area = 8 dbkey = 342214129 update counter = 8798 (12529) 14:29:28: Session received HANGUP signal. 16:09:16: Transaction was INSTANTLY undone. Why the transaction was undone only since one hour 40 minutes after HANGUP is the different story. [2019/02/22@16:09:16.787+0300] P-39454604 T-1 I ABL 939: (2252) Begin transaction backout. [2019/02/22@16:09:16.847+0300] P-39454604 T-1 I ABL 939: (2253) Transaction backout completed. Trid: 1002166296 code = RL_CXREM version = 2 (12528) Trid: 1002166296 area = 8 dbkey = 342214285 update counter = 11500 (12529) Trid: 1002166296 code = RL_CXREM version = 2 (12528) Trid: 1002166296 area = 8 dbkey = 44460085 update counter = 551 (12529) Trid: 1002166296 code = RL_CXREM version = 2 (12528) Trid: 1002166296 area = 8 dbkey = 289733725 update counter = 8537 (12529) Trid: 1002166296 code = RL_CXREM version = 2 (12528) Trid: 1002166296 area = 8 dbkey = 342214261 update counter = 1995 (12529) Trid: 1002166296 code = RL_LOGOP_START version = 1 (12528) Trid: 1002166296 dbkey = 0 update counter = 0 (12530) Trid: 1002166296 code = RL_RMDEL version = 2 (12528) Trid: 1002166296 area = 7 dbkey = 42707187456 update counter = 65 (12529) Trid: 1002166296 code = RL_RMCR version = 2 (12528) Trid: 1002166296 area = 7 dbkey = 42707187456 update counter = 66 (12529) Trid: 1002166296 code = RL_BKBBOT version = 1 (12528) Trid: 1002166296 area = 7 dbkey = 42707187456 update counter = 67 (12529) Trid: 1002166296 code = RL_BKMBOT version = 2 (12528) Trid: 1002166296 area = 7 dbkey = 32768 update counter = -2009448691 (12529) Trid: 1002166296 code = RL_BK2EB version = 2 (12528) Trid: 1002166296 area = 7 dbkey = 42720444352 update counter = 73 (12529) Trid: 1002166296 code = RL_LOGOP_END version = 1 (12528) Trid: 1002166296 dbkey = 0 update counter = 0 (12530) Trid: 1002166296 Fri Feb 22 16:09:16 2019. (2598) Trid: 1002166296 code = RL_TEND version = 1 (12528) Trid: 1002166296 dbkey = 0 update counter = 0 (12530) During rollback the recovery notes are used in the reverse order. So the first note at the UNDO phase removed the last index key created at the FWD phase. But last RL_CXINS note created the index key in dbkey = 342214129 while RL_CXREM note removed the key from dbkey = 342214285. The reason is the index block split that happened at 10:29:59 – 28 seconds later after FWD phases of the transaction and 5 hours 40 minutes before the beginning of its backout: Trid: 1002168778 code = RL_CXSP1 version = 1 (12528) Trid: 1002168778 area = 8 dbkey = 342214129 update counter = 14398 (12529) Trid: 1002168778 code = RL_CXSP2 version = 1 (12528) Trid: 1002168778 area = 8 dbkey = 342214285 update counter = 2 (12529) Other transactions wrote 10.7 GB (approximately 97 million notes) to BI file between the index block split and the beginning of transaction backout. Of course, the notes of Trid 1002166296 did not know the dbkey of new index block where the index key was moved. What is the magic trick was used to find RL_CXSP2 note among almost 100 million notes just in 60 milliseconds (16:09:16.787 - 16:09:16.847) ? Is it “the jump note technology”?

Continue reading...
 
Status
Not open for further replies.
Top