From: Aaron Schulz Date: Thu, 21 Jul 2016 01:33:25 +0000 (-0700) Subject: Make non-exception rollback() calls safer X-Git-Tag: 1.31.0-rc.0~6303^2 X-Git-Url: http://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/operations/?a=commitdiff_plain;h=6bbbb2744625d7f9d739020665c21768c290cfb2;p=lhc%2Fweb%2Fwiklou.git 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 --- 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; }