Merge "Remove perf tracking code that was moved to WikimediaEvents in Ib300af5c"
[lhc/web/wiklou.git] / maintenance / updateSpecialPages.php
index 8b24b90..e2c0c61 100644 (file)
@@ -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 slave to catch up
-                                       wfWaitForSlaves();
+                                       $this->reopenAndWaitForReplicas();
                                } 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 reopenAndWaitForReplicas() {
+               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;
 
@@ -153,8 +163,8 @@ class UpdateSpecialPages extends Maintenance {
                                        $this->output( $minutes . 'm ' );
                                }
                                $this->output( sprintf( "%.2fs\n", $seconds ) );
-                               # Wait for the slave to catch up
-                               wfWaitForSlaves();
+                               # Wait for the replica DB to catch up
+                               $this->reopenAndWaitForReplicas();
                        }
                }
        }