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

Status
Not open for further replies.
G

gus bjorklund

Guest
> On Mar 30, 2019, at 6:30 PM, Dapeng Wu wrote: > > the "magic" trick to find RL_CXSP2, I don't think it's due to the jump note. dapeng, you are correct. sorry for my sloppy and insufficient explanation. the first transaction inserts a new index entry in index block 342214129. later, the second transaction does a block split, moving the inserted entry into index block 342214285, and also making a lot more other changes. then, still later, the first transaction makes more database changes, generating more notes. or maybe no other changes at all, and then is rolled back. when the first transaction is rolled back, the rollback starts at the last note generated, reading backward and skipping over purely physical operations. the start point could be the insert of the new index entry before the split or at some later operation done by the first transaction. in the case of a later operation, there would be a jump note that skips over stuff done by the second transaction (assuming many bi blocks of other stuff intervenes as george describes), but maybe the jump would not go all the way back to the original index entry insertion. anyhow, once the rollback gets back to the index entry insertion note, because it is a logical rollback, instead of undoing the operation on block 342214129 which is now the wrong one, it extracts the key from the note and does a regular index lookup to find the entry in the correct block, 342214285. note that during normal rollback, this lookup could run into conflicting db buffer locks, bi and ai buffer locks locks, and so on, and be delayed by the other transactions. furthermore, there could be more block splits, causing the entry to be moved still further. so, while the jump note may not lead from the block split to the original index entry insert, in this scenario, there would certainly be one or more of them to enable the first transaction’s rollback to skip over the notes generated by the second. thus i suppose one could say the magic is a combination of jumpnote(s) and key lookup.

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