Reopen db connection after doing SpecialPageCacheUpdates
Special page updates on commons have been broken recently due to Mysql "going away" after doing the ActiveUsers special page cache update. Presumably this is because we were only repinging the server after QueryPage updates, and not the callback updates (Combined with a spike in wikidata recentchanges entries making the ActiveUsers callback now take about an hour to complete) Bug: T176055 Change-Id: Ic344940460c353544d7c08bbe2d8c900f6cc73da
This commit is contained in:
parent
756f1f6aa2
commit
67f04373d6
1 changed files with 21 additions and 11 deletions
|
|
@ -101,16 +101,7 @@ class UpdateSpecialPages extends Maintenance {
|
|||
$this->output( sprintf( "%.2fs\n", $seconds ) );
|
||||
}
|
||||
# Reopen any connections that have closed
|
||||
if ( !wfGetLB()->pingAll() ) {
|
||||
$this->output( "\n" );
|
||||
do {
|
||||
$this->error( "Connection failed, reconnecting in 10 seconds..." );
|
||||
sleep( 10 );
|
||||
} while ( !wfGetLB()->pingAll() );
|
||||
$this->output( "Reconnected\n\n" );
|
||||
}
|
||||
# Wait for the replica DB to catch up
|
||||
wfWaitForSlaves();
|
||||
$this->reopenAndWaitFotReplicas();
|
||||
} else {
|
||||
$this->output( "cheap, skipped\n" );
|
||||
}
|
||||
|
|
@ -121,6 +112,25 @@ class UpdateSpecialPages extends Maintenance {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Re-open any closed db connection, and wait for replicas
|
||||
*
|
||||
* Queries that take a really long time, might cause the
|
||||
* mysql connection to "go away"
|
||||
*/
|
||||
private function reopenAndWaiFotReplicas() {
|
||||
if ( !wfGetLB()->pingAll() ) {
|
||||
$this->output( "\n" );
|
||||
do {
|
||||
$this->error( "Connection failed, reconnecting in 10 seconds..." );
|
||||
sleep( 10 );
|
||||
} while ( !wfGetLB()->pingAll() );
|
||||
$this->output( "Reconnected\n\n" );
|
||||
}
|
||||
# Wait for the replica DB to catch up
|
||||
wfWaitForSlaves();
|
||||
}
|
||||
|
||||
public function doSpecialPageCacheUpdates( $dbw ) {
|
||||
global $wgSpecialPageCacheUpdates;
|
||||
|
||||
|
|
@ -154,7 +164,7 @@ class UpdateSpecialPages extends Maintenance {
|
|||
}
|
||||
$this->output( sprintf( "%.2fs\n", $seconds ) );
|
||||
# Wait for the replica DB to catch up
|
||||
wfWaitForSlaves();
|
||||
$this->reopenAndWaitForReplicas();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue