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->output( sprintf( "%.2fs\n", $seconds ) );
}
# Reopen any connections that have closed
$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" );
}
} else {
$this->output( "cheap, skipped\n" );
}
+ /**
+ * 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;
public function doSpecialPageCacheUpdates( $dbw ) {
global $wgSpecialPageCacheUpdates;
}
$this->output( sprintf( "%.2fs\n", $seconds ) );
# Wait for the replica DB to catch up
}
$this->output( sprintf( "%.2fs\n", $seconds ) );
# Wait for the replica DB to catch up
+ $this->reopenAndWaitForReplicas();