ROADMAP v0.3.0 - Main recovery procedure (Analysis→Redo→Undo phases)
(&mut self)
| 81 | /// Perform crash recovery by replaying WAL |
| 82 | #[allow(dead_code)] // ROADMAP v0.3.0 - Main recovery procedure (Analysis→Redo→Undo phases) |
| 83 | pub fn recover(&mut self) -> Result<RecoveryReport, RecoveryError> { |
| 84 | let mut report = RecoveryReport::new(); |
| 85 | |
| 86 | // Phase 1: Analysis - Scan WAL to determine transaction states |
| 87 | self.analysis_phase(&mut report)?; |
| 88 | |
| 89 | // Phase 2: Redo - Replay committed transactions |
| 90 | self.redo_phase(&mut report)?; |
| 91 | |
| 92 | // Phase 3: Undo - Rollback incomplete transactions |
| 93 | self.undo_phase(&mut report)?; |
| 94 | |
| 95 | Ok(report) |
| 96 | } |
| 97 | |
| 98 | /// Analysis phase: scan WAL to determine transaction states |
| 99 | fn analysis_phase(&mut self, report: &mut RecoveryReport) -> Result<(), RecoveryError> { |