diff options
author | Amir Sarabadani <ladsgroup@gmail.com> | 2021-11-18 04:23:26 +0100 |
---|---|---|
committer | Amir Sarabadani <ladsgroup@gmail.com> | 2021-11-18 04:51:59 +0100 |
commit | f600baea596ea37b26e68e53715caefffeab30e0 (patch) | |
tree | 43cb9ee44a220944256f086683888ccf19320248 /maintenance/migrateRevisionActorTemp.php | |
parent | f06bf9315292984e952a22b1e423cfb1eea9f829 (diff) | |
download | mediawikicore-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.php | 15 |
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( |