From 605329976fcad085ff954376297cfb20310d3c4d Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Tue, 13 May 2014 15:03:32 -0700 Subject: [PATCH] Made LocalFile avoid duplicate (name,timestamp) pairs * Various bits of code seem to assume uniqueness already bug: 65264 Change-Id: Ib00fdbe87a79296c640cd69d74928236ce7a4aee --- includes/filerepo/file/LocalFile.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/includes/filerepo/file/LocalFile.php b/includes/filerepo/file/LocalFile.php index 73ab04d49a..e8f70fca8d 100644 --- a/includes/filerepo/file/LocalFile.php +++ b/includes/filerepo/file/LocalFile.php @@ -1249,7 +1249,17 @@ class LocalFile extends File { } if ( $timestamp === false ) { - $timestamp = $dbw->timestamp(); + $ltimestamp = $dbw->selectField( 'image', 'img_timestamp', + array( 'img_name' => $this->getName() ), __METHOD__ ); + $ltime = $ltimestamp ? wfTimestamp( TS_UNIX, $ltimestamp ) : false; + $ctime = time(); + // Avoid a timestamp that is not newer than the last version + if ( $ctime > $ltime ) { + $timestamp = $dbw->timestamp( $ctime ); + } else { + sleep( 1 ); // fast enough uploads will go in to the future otherwise + $timestamp = $dbw->timestamp( $ltime + 1 ); + } } $props['description'] = $comment; -- 2.20.1