Testing:



next up previous
Next: Retrospective: Up: MINIREL : Recovery Manager

Previous: Accomplishments:


Testing:

  We created test scripts of increasing complexity to test our code. Initially, we tested the basic aborts, rollbacks and checkpoints. We then tested the restart. Since we implemented page flush and buffer pool commands, we were able to make sure that if a transaction did not commit, but its page was flushed to disk, the restart phase would undo the changes of that transaction. The final tests tried multiple crashes during restart. During testing, we found situations which seldom arise in practice, but could cause problems. For example : We provide a function GetRecoveryLSN() which is invoked by the Buffer Manager. This function is used by the Buffer Manager to initialize the 'recovery lsn' field in the Dirty Page Table. The recovery lsn indicates the point where the 'Redo' phase would begin, for the specified page, in the event of a crash. During the Normal Mode of operation of the Recovery Manager, the recovery lsn value is supplied by the Log Manager. The Log Manager returns the next valid lsn of the log. We discovered that this was not true if the Recovery Manager was running in the Restart Mode. gif The page is not in a consistent state during Restart and the value from the log will not provide the correct value. So, we retrieve the value of the 'recovery lsn' from the local Dirty Page Table.



ranjani ramamurthy
Sat May 13 16:56:49 CDT 1995