Merge "Return early when page id is less than 1"
[lhc/web/wiklou.git] / includes / db / LoadMonitor.php
index 651c499..fa2dd99 100644 (file)
@@ -32,7 +32,7 @@ interface LoadMonitor {
         *
         * @param LoadBalancer $parent
         */
-       function __construct( $parent );
+       public function __construct( $parent );
 
        /**
         * Perform pre-connection load ratio adjustment.
@@ -40,25 +40,7 @@ interface LoadMonitor {
         * @param string|bool $group The selected query group. Default: false
         * @param string|bool $wiki Default: false
         */
-       function scaleLoads( &$loads, $group = false, $wiki = false );
-
-       /**
-        * Perform post-connection backoff.
-        *
-        * If the connection is in overload, this should return a backoff factor
-        * which will be used to control polling time. The number of threads
-        * connected is a good measure.
-        *
-        * If there is no overload, zero can be returned.
-        *
-        * A threshold thread count is given, the concrete class may compare this
-        * to the running thread count. The threshold may be false, which indicates
-        * that the sysadmin has not configured this feature.
-        *
-        * @param DatabaseBase $conn
-        * @param float $threshold
-        */
-       function postConnectionBackoff( $conn, $threshold );
+       public function scaleLoads( &$loads, $group = false, $wiki = false );
 
        /**
         * Return an estimate of replication lag for each server
@@ -68,25 +50,17 @@ interface LoadMonitor {
         *
         * @return array
         */
-       function getLagTimes( $serverIndexes, $wiki );
+       public function getLagTimes( $serverIndexes, $wiki );
 }
 
 class LoadMonitorNull implements LoadMonitor {
-       function __construct( $parent ) {
-       }
-
-       function scaleLoads( &$loads, $group = false, $wiki = false ) {
+       public function __construct( $parent ) {
        }
 
-       function postConnectionBackoff( $conn, $threshold ) {
+       public function scaleLoads( &$loads, $group = false, $wiki = false ) {
        }
 
-       /**
-        * @param array $serverIndexes
-        * @param string $wiki
-        * @return array
-        */
-       function getLagTimes( $serverIndexes, $wiki ) {
+       public function getLagTimes( $serverIndexes, $wiki ) {
                return array_fill_keys( $serverIndexes, 0 );
        }
 }
@@ -101,33 +75,21 @@ class LoadMonitorMySQL implements LoadMonitor {
        /** @var LoadBalancer */
        public $parent;
 
-       /**
-        * @param LoadBalancer $parent
-        */
-       function __construct( $parent ) {
+       public function __construct( $parent ) {
                $this->parent = $parent;
        }
 
-       /**
-        * @param array $loads
-        * @param bool $group
-        * @param bool $wiki
-        */
-       function scaleLoads( &$loads, $group = false, $wiki = false ) {
+       public function scaleLoads( &$loads, $group = false, $wiki = false ) {
        }
 
-       /**
-        * @param array $serverIndexes
-        * @param string $wiki
-        * @return array
-        */
-       function getLagTimes( $serverIndexes, $wiki ) {
+       public function getLagTimes( $serverIndexes, $wiki ) {
                if ( count( $serverIndexes ) == 1 && reset( $serverIndexes ) == 0 ) {
                        // Single server only, just return zero without caching
                        return array( 0 => 0 );
                }
 
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                $expiry = 5;
                $requestRate = 10;
 
@@ -145,7 +107,6 @@ class LoadMonitorMySQL implements LoadMonitor {
                        $chance = max( 0, ( $expiry - $elapsed ) * $requestRate );
                        if ( mt_rand( 0, $chance ) != 0 ) {
                                unset( $times['timestamp'] ); // hide from caller
-                               wfProfileOut( __METHOD__ );
 
                                return $times;
                        }
@@ -163,7 +124,6 @@ class LoadMonitorMySQL implements LoadMonitor {
                } elseif ( is_array( $times ) ) {
                        # Could not acquire lock but an old cache exists, so use it
                        unset( $times['timestamp'] ); // hide from caller
-                       wfProfileOut( __METHOD__ );
 
                        return $times;
                }
@@ -184,28 +144,6 @@ class LoadMonitorMySQL implements LoadMonitor {
                $wgMemc->set( $memcKey, $times, $expiry + 10 );
                unset( $times['timestamp'] ); // hide from caller
 
-               wfProfileOut( __METHOD__ );
-
                return $times;
        }
-
-       /**
-        * @param DatabaseBase|DatabaseMySQLBase $conn
-        * @param int $threshold
-        * @return int
-        */
-       function postConnectionBackoff( $conn, $threshold ) {
-               if ( !$threshold ) {
-                       return 0;
-               }
-               $status = $conn->getMysqlStatus( "Thread%" );
-               if ( $status['Threads_running'] > $threshold ) {
-                       $server = $conn->getProperty( 'mServer' );
-                       wfLogDBError( "LB backoff from $server - Threads_running = {$status['Threads_running']}\n" );
-
-                       return $status['Threads_connected'];
-               } else {
-                       return 0;
-               }
-       }
 }