Merge "[FileBackend] Improved copy/sync script output."
authorBrion VIBBER <brion@wikimedia.org>
Tue, 10 Jul 2012 18:41:14 +0000 (18:41 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 10 Jul 2012 18:41:14 +0000 (18:41 +0000)
maintenance/copyFileBackend.php
maintenance/syncFileBackend.php

index 78ffb20..1f72e33 100644 (file)
@@ -127,12 +127,15 @@ class CopyFileBackend extends Maintenance {
                                'src' => $fsFile->getPath(), 'dst' => $dstPath, 'overwrite' => 1 );
                }
 
+               $t_start = microtime( true );
                $status = $dst->doOperations( $ops, array( 'nonJournaled' => 1 ) );
+               $ellapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
                if ( !$status->isOK() ) {
                        $this->error( print_r( $status->getErrorsArray(), true ) );
                        $this->error( "Could not copy file batch.", 1 ); // die
                } else {
-                       $this->output( "Copied these file(s):\n" . implode( "\n", $srcPathsRel ) . "\n\n" );
+                       $this->output( "\nCopied these file(s) [{$ellapsed_ms}ms]:\n" .
+                               implode( "\n", $srcPathsRel ) . "\n\n" );
                }
        }
 
index 0d5c9de..1af33e6 100644 (file)
@@ -39,12 +39,11 @@ class SyncFileBackend extends Maintenance {
                $src = FileBackendGroup::singleton()->get( $this->getOption( 'src' ) );
                $dst = FileBackendGroup::singleton()->get( $this->getOption( 'dst' ) );
 
-               $posFile = $this->getOption( 'posdir' )
-                       ? $this->getOption( 'posdir' ) . '/' . wfWikiID()
-                       : false;
+               $posDir = $this->getOption( 'posdir' );
+               $posFile = $posDir ? $posDir . '/' . wfWikiID() : false;
 
                $start = $this->getOption( 'start', 0 );
-               if ( !$start && $posFile ) {
+               if ( !$start && $posFile && is_dir( $posDir ) ) {
                        $start = is_file( $posFile )
                                ? (int)trim( file_get_contents( $posFile ) )
                                : 0;
@@ -66,8 +65,11 @@ class SyncFileBackend extends Maintenance {
 
                // Update the sync position file
                if ( $startFromPosFile && $lastOKPos >= $start ) { // successfully advanced
-                       file_put_contents( $posFile, $lastOKPos, LOCK_EX );
-                       $this->output( "Updated journal position file.\n" );
+                       if ( file_put_contents( $posFile, $lastOKPos, LOCK_EX ) !== false ) {
+                               $this->output( "Updated journal position file.\n" );
+                       } else {
+                               $this->output( "Could not update journal position file.\n" );
+                       }
                }
 
                if ( $lastOKPos === false ) {
@@ -198,10 +200,13 @@ class SyncFileBackend extends Maintenance {
                        }
                }
 
+               $t_start = microtime( true );
                $status->merge( $dst->doOperations( $ops,
                        array( 'nonLocking' => 1, 'nonJournaled' => 1 ) ) );
+               $ellapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
                if ( $status->isOK() && $this->getOption( 'verbose' ) ) {
-                       $this->output( "Synchronized these file(s):\n" . implode( "\n", $dPaths ) . "\n" );
+                       $this->output( "Synchronized these file(s) [{$ellapsed_ms}ms]:\n" .
+                               implode( "\n", $dPaths ) . "\n" );
                }
 
                return $status;