X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=maintenance%2FsyncFileBackend.php;h=b9493cdc0be6d1781c772d64e8593b34384e4617;hb=30bbf6588dc4f86f247568f211b4cbb371eaf895;hp=f0be709f9b4f0e2cab714b4a91b8f08455ab5ecb;hpb=ebbea3c974312c56e93799fc93ee3f35130703f9;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/syncFileBackend.php b/maintenance/syncFileBackend.php index f0be709f9b..b9493cdc0b 100644 --- a/maintenance/syncFileBackend.php +++ b/maintenance/syncFileBackend.php @@ -71,6 +71,7 @@ class SyncFileBackend extends Maintenance { if ( $this->isQuiet() ) { print $id; // give a single machine-readable number } + return; } @@ -104,7 +105,7 @@ class SyncFileBackend extends Maintenance { } // Periodically update the position file - $callback = function( $pos ) use ( $startFromPosFile, $posFile, $start ) { + $callback = function ( $pos ) use ( $startFromPosFile, $posFile, $start ) { if ( $startFromPosFile && $pos >= $start ) { // successfully advanced file_put_contents( $posFile, $pos, LOCK_EX ); } @@ -141,12 +142,12 @@ class SyncFileBackend extends Maintenance { * Sync $dst backend to $src backend based on the $src logs given after $start. * Returns the journal entry ID this advanced to and handled (inclusive). * - * @param $src FileBackend - * @param $dst FileBackend - * @param $start integer Starting journal position - * @param $end integer Starting journal position - * @param $callback Closure Callback to update any position file - * @return integer|false Journal entry ID or false if there are none + * @param FileBackend $src + * @param FileBackend $dst + * @param int $start Starting journal position + * @param int $end Starting journal position + * @param Closure $callback Callback to update any position file + * @return int|bool Journal entry ID or false if there are none */ protected function syncBackends( FileBackend $src, FileBackend $dst, $start, $end, Closure $callback @@ -198,9 +199,9 @@ class SyncFileBackend extends Maintenance { /** * Sync particular files of backend $src to the corresponding $dst backend files * - * @param $paths Array - * @param $src FileBackend - * @param $dst FileBackend + * @param array $paths + * @param FileBackend $src + * @param FileBackend $dst * @return Status */ protected function syncFileBatch( array $paths, FileBackend $src, FileBackend $dst ) { @@ -221,6 +222,9 @@ class SyncFileBackend extends Maintenance { return $status; } + $src->preloadFileStat( array( 'srcs' => $sPaths, 'latest' => 1 ) ); + $dst->preloadFileStat( array( 'srcs' => $dPaths, 'latest' => 1 ) ); + $ops = array(); $fsFiles = array(); foreach ( $sPaths as $i => $sPath ) { @@ -235,6 +239,7 @@ class SyncFileBackend extends Maintenance { if ( !$fsFile ) { $this->error( "Unable to sync '$dPath': could not get local copy." ); $status->fatal( 'backend-fail-internal', $src->getName() ); + return $status; } $fsFiles[] = $fsFile; // keep TempFSFile objects alive as needed @@ -251,6 +256,7 @@ class SyncFileBackend extends Maintenance { } else { // error $this->error( "Unable to sync '$dPath': could not stat file." ); $status->fatal( 'backend-fail-internal', $src->getName() ); + return $status; } } @@ -273,8 +279,8 @@ class SyncFileBackend extends Maintenance { /** * Substitute the backend name of storage paths with that of a given one * - * @param $paths Array|string List of paths or single string path - * @return Array|string + * @param array|string $paths List of paths or single string path + * @return array|string */ protected function replaceNamePaths( $paths, FileBackend $backend ) { return preg_replace(