$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" );
}
}
}
+ /**
+ * 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;
}
$this->output( sprintf( "%.2fs\n", $seconds ) );
# Wait for the replica DB to catch up
- wfWaitForSlaves();
+ $this->reopenAndWaitForReplicas();
}
}
}