From 51c173912a548b75c61b4072b2e8da308afb850e Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Mon, 19 May 2014 15:18:01 -0700 Subject: [PATCH] Fixed possible race condition in LocalFileMoveBatch * If a move is blocked by a re-upload and the TRX started outside of LocalFile::lock, then the move did not see the new row in the oldimage table and so it will not move that version of the file in storage. Use the latest DB data to avoid that. Change-Id: I7ec46941170293c96b99a449cb396517108e8b3d --- includes/filerepo/file/LocalFile.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/includes/filerepo/file/LocalFile.php b/includes/filerepo/file/LocalFile.php index a8fa8bd67b..6315fdcd94 100644 --- a/includes/filerepo/file/LocalFile.php +++ b/includes/filerepo/file/LocalFile.php @@ -2758,7 +2758,8 @@ class LocalFileMoveBatch { $result = $this->db->select( 'oldimage', array( 'oi_archive_name', 'oi_deleted' ), array( 'oi_name' => $this->oldName ), - __METHOD__ + __METHOD__, + array( 'FOR UPDATE' ) // ignore snapshot ); foreach ( $result as $row ) { -- 2.20.1