From 6bbbb2744625d7f9d739020665c21768c290cfb2 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Wed, 20 Jul 2016 18:33:25 -0700 Subject: [PATCH] Make non-exception rollback() calls safer Use rollbackMasterChanges() instead so that all DBs get reverted. Otherwise, external DB updates may get committed while related local DB changes are rolled back. Change-Id: I74de77f4b12dc15c0473c272d090caeeb97d6983 --- includes/FileDeleteForm.php | 2 +- includes/revisiondelete/RevDelList.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/includes/FileDeleteForm.php b/includes/FileDeleteForm.php index 98f8283813..361058b17a 100644 --- a/includes/FileDeleteForm.php +++ b/includes/FileDeleteForm.php @@ -203,7 +203,7 @@ class FileDeleteForm { $dbw->endAtomic( __METHOD__ ); } else { // Page deleted but file still there? rollback page delete - $dbw->rollback( __METHOD__ ); + wfGetLBFactory()->rollbackMasterChanges( __METHOD__ ); } } else { // Done; nothing changed diff --git a/includes/revisiondelete/RevDelList.php b/includes/revisiondelete/RevDelList.php index 0a86e943d8..bad9d776ca 100644 --- a/includes/revisiondelete/RevDelList.php +++ b/includes/revisiondelete/RevDelList.php @@ -244,8 +244,8 @@ abstract class RevDelList extends RevisionListBase { // Move files, if there are any $status->merge( $this->doPreCommitUpdates() ); if ( !$status->isOK() ) { - // Fatal error, such as no configured archive directory - $dbw->rollback( __METHOD__ ); + // Fatal error, such as no configured archive directory or I/O failures + wfGetLBFactory()->rollbackMasterChanges( __METHOD__ ); return $status; } -- 2.20.1