Merge "Return early when page id is less than 1"
[lhc/web/wiklou.git] / includes / db / LoadMonitor.php
index b293531..fa2dd99 100644 (file)
@@ -32,65 +32,35 @@ interface LoadMonitor {
         *
         * @param LoadBalancer $parent
         */
-       function __construct( $parent );
+       public function __construct( $parent );
 
        /**
         * Perform pre-connection load ratio adjustment.
         * @param array $loads
-        * @param string|bool $group the selected query group. Default: false
+        * @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 $conn DatabaseBase
-        * @param $threshold Float
-        */
-       function postConnectionBackoff( $conn, $threshold );
+       public function scaleLoads( &$loads, $group = false, $wiki = false );
 
        /**
         * Return an estimate of replication lag for each server
         *
-        * @param $serverIndexes
-        * @param $wiki
+        * @param array $serverIndexes
+        * @param string $wiki
         *
         * @return array
         */
-       function getLagTimes( $serverIndexes, $wiki );
+       public function getLagTimes( $serverIndexes, $wiki );
 }
 
-/**
- * @todo FIXME: Should be  LoadMonitorNull per naming conventions.
- * PHP CodeSniffer Squiz.Classes.ValidClassName.NotCamelCaps
- */
-class LoadMonitor_Null implements LoadMonitor {
-       function __construct( $parent ) {
+class LoadMonitorNull implements LoadMonitor {
+       public function __construct( $parent ) {
        }
 
-       function scaleLoads( &$loads, $group = false, $wiki = false ) {
+       public function scaleLoads( &$loads, $group = false, $wiki = false ) {
        }
 
-       function postConnectionBackoff( $conn, $threshold ) {
-       }
-
-       /**
-        * @param $serverIndexes
-        * @param $wiki
-        * @return array
-        */
-       function getLagTimes( $serverIndexes, $wiki ) {
+       public function getLagTimes( $serverIndexes, $wiki ) {
                return array_fill_keys( $serverIndexes, 0 );
        }
 }
@@ -100,42 +70,26 @@ class LoadMonitor_Null implements LoadMonitor {
  * Uses memcached to cache the replication lag for a short time
  *
  * @ingroup Database
- * @todo FIXME: Should be  LoadMonitorMySQL per naming conventions.
- * PHP CodeSniffer Squiz.Classes.ValidClassName.NotCamelCaps
  */
-class LoadMonitor_MySQL implements LoadMonitor {
-       /**
-        * @var LoadBalancer
-        */
+class LoadMonitorMySQL implements LoadMonitor {
+       /** @var LoadBalancer */
        public $parent;
 
-       /**
-        * @param LoadBalancer $parent
-        */
-       function __construct( $parent ) {
+       public function __construct( $parent ) {
                $this->parent = $parent;
        }
 
-       /**
-        * @param $loads
-        * @param $group bool
-        * @param $wiki bool
-        */
-       function scaleLoads( &$loads, $group = false, $wiki = false ) {
+       public function scaleLoads( &$loads, $group = false, $wiki = false ) {
        }
 
-       /**
-        * @param $serverIndexes
-        * @param $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;
 
@@ -153,7 +107,6 @@ class LoadMonitor_MySQL implements LoadMonitor {
                        $chance = max( 0, ( $expiry - $elapsed ) * $requestRate );
                        if ( mt_rand( 0, $chance ) != 0 ) {
                                unset( $times['timestamp'] ); // hide from caller
-                               wfProfileOut( __METHOD__ );
 
                                return $times;
                        }
@@ -171,7 +124,6 @@ class LoadMonitor_MySQL 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;
                }
@@ -192,28 +144,6 @@ class LoadMonitor_MySQL implements LoadMonitor {
                $wgMemc->set( $memcKey, $times, $expiry + 10 );
                unset( $times['timestamp'] ); // hide from caller
 
-               wfProfileOut( __METHOD__ );
-
                return $times;
        }
-
-       /**
-        * @param $conn DatabaseBase
-        * @param $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;
-               }
-       }
 }