Added a --backoff option for syncFileBackend.php
authorAaron Schulz <aschulz@wikimedia.org>
Wed, 1 May 2013 01:53:01 +0000 (18:53 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Wed, 1 May 2013 01:53:01 +0000 (18:53 -0700)
* This is useful for avoiding in-progress operations if locking
  is not enabled (the journal is updated before file changes).

Change-Id: Ieab3b157a6858f68cc9259214cac1743b7525da0

maintenance/syncFileBackend.php

index 158019b..e5d755e 100644 (file)
@@ -40,6 +40,7 @@ class SyncFileBackend extends Maintenance {
                $this->addOption( 'posdir', 'Directory to read/record journal positions', false, true );
                $this->addOption( 'posdump', 'Just dump current journal position into the position dir.' );
                $this->addOption( 'postime', 'For position dumps, get the ID at this time', false, true );
+               $this->addOption( 'backoff', 'Stop at entries younger than this age (sec).', false, true );
                $this->addOption( 'verbose', 'Verbose mode', false, false, 'v' );
                $this->setBatchSize( 50 );
        }
@@ -88,7 +89,13 @@ class SyncFileBackend extends Maintenance {
                } else {
                        $startFromPosFile = false;
                }
-               $end = $this->getOption( 'end', INF );
+
+               if ( $this->hasOption( 'backoff' ) ) {
+                       $time = time() - $this->getOption( 'backoff', 0 );
+                       $end = (int)$src->getJournal()->getPositionAtTime( $time );
+               } else {
+                       $end = $this->getOption( 'end', INF );
+               }
 
                $this->output( "Synchronizing backend '{$dst->getName()}' to '{$src->getName()}'...\n" );
                $this->output( "Starting journal position is $start.\n" );