aboutsummaryrefslogtreecommitdiffstats
path: root/maintenance/migrateRevisionActorTemp.php
diff options
context:
space:
mode:
authorAmir Sarabadani <ladsgroup@gmail.com>2021-11-18 04:23:26 +0100
committerAmir Sarabadani <ladsgroup@gmail.com>2021-11-18 04:51:59 +0100
commitf600baea596ea37b26e68e53715caefffeab30e0 (patch)
tree43cb9ee44a220944256f086683888ccf19320248 /maintenance/migrateRevisionActorTemp.php
parentf06bf9315292984e952a22b1e423cfb1eea9f829 (diff)
downloadmediawikicore-f600baea596ea37b26e68e53715caefffeab30e0.tar.gz
mediawikicore-f600baea596ea37b26e68e53715caefffeab30e0.zip
maintenance: Add waitForReplication and sleep in migrateRevisionActorTemp
- waitForReplication is critical in such scripts, it has caused a major outage in commons before. - The extra sleep is not important for scripts that take a couple of hours to finish but it is important for ones that take more than a day. Because replication lag to secondary datacenter and non-core dbs (cloud, backup source, analytics) is not reflected in waitForReplication and running a maint script for an extended period of time will cause issues for those. You can see similar work done on similar scripts such as deleteAutoPatrolLogs.php Bug: T275246 Change-Id: If6aa0aaadc62949c151a1f675f8aa24041bf3738
Diffstat (limited to 'maintenance/migrateRevisionActorTemp.php')
-rw-r--r--maintenance/migrateRevisionActorTemp.php15
1 files changed, 15 insertions, 0 deletions
diff --git a/maintenance/migrateRevisionActorTemp.php b/maintenance/migrateRevisionActorTemp.php
index 93175584b987..26cb4554a22c 100644
--- a/maintenance/migrateRevisionActorTemp.php
+++ b/maintenance/migrateRevisionActorTemp.php
@@ -1,5 +1,7 @@
<?php
+use MediaWiki\MediaWikiServices;
+
require_once __DIR__ . '/Maintenance.php';
/**
@@ -15,6 +17,12 @@ class MigrateRevisionActorTemp extends LoggedUpdateMaintenance {
$this->addDescription(
'Copy the data from the revision_actor_temp into the revision table'
);
+ $this->addOption(
+ 'sleep',
+ 'Sleep time (in seconds) between every batch. Default: 0',
+ false,
+ true
+ );
}
protected function getUpdateKey() {
@@ -76,6 +84,13 @@ class MigrateRevisionActorTemp extends LoggedUpdateMaintenance {
$this->output( "... rev_id=$last, updated $updated\n" );
$conds = [ 'rev_id > ' . $dbw->addQuotes( $last ) ];
+
+ // Sleep between batches for replication to catch up
+ MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->waitForReplication();
+ $sleep = (int)$this->getOption( 'sleep', 0 );
+ if ( $sleep > 0 ) {
+ sleep( $sleep );
+ }
}
$this->output(