X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Flibs%2Frdbms%2FTransactionProfiler.php;h=af431a6787e5dc37bf06f3db9445fc368633e9df;hb=3f1a52805e3cf801eda0357ee236de6b49a31c85;hp=823e0dc5cd3f6dd8c16a1875bba38a97dd996d73;hpb=aae0c8d42562d5d3f70cc18fa687ae331996b66f;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/libs/rdbms/TransactionProfiler.php b/includes/libs/rdbms/TransactionProfiler.php index 823e0dc5cd..af431a6787 100644 --- a/includes/libs/rdbms/TransactionProfiler.php +++ b/includes/libs/rdbms/TransactionProfiler.php @@ -19,7 +19,6 @@ * * @file * @ingroup Profiler - * @author Aaron Schulz */ namespace Wikimedia\Rdbms; @@ -100,7 +99,7 @@ class TransactionProfiler implements LoggerAwareInterface { * With conflicting expectations, the most narrow ones will be used * * @param string $event (writes,queries,conns,mConns) - * @param integer $value Maximum count of the event + * @param int $value Maximum count of the event * @param string $fname Caller * @since 1.25 */ @@ -119,7 +118,7 @@ class TransactionProfiler implements LoggerAwareInterface { * With conflicting expectations, the most narrow ones will be used * * @param array $expects Map of (event => limit) - * @param $fname + * @param string $fname * @since 1.26 */ public function setExpectations( array $expects, $fname ) { @@ -156,11 +155,13 @@ class TransactionProfiler implements LoggerAwareInterface { */ public function recordConnection( $server, $db, $isMaster ) { // Report when too many connections happen... - if ( $this->hits['conns']++ == $this->expect['conns'] ) { - $this->reportExpectationViolated( 'conns', "[connect to $server ($db)]" ); + if ( $this->hits['conns']++ >= $this->expect['conns'] ) { + $this->reportExpectationViolated( + 'conns', "[connect to $server ($db)]", $this->hits['conns'] ); } - if ( $isMaster && $this->hits['masterConns']++ == $this->expect['masterConns'] ) { - $this->reportExpectationViolated( 'masterConns', "[connect to $server ($db)]" ); + if ( $isMaster && $this->hits['masterConns']++ >= $this->expect['masterConns'] ) { + $this->reportExpectationViolated( + 'masterConns', "[connect to $server ($db)]", $this->hits['masterConns'] ); } } @@ -198,7 +199,7 @@ class TransactionProfiler implements LoggerAwareInterface { * @param string $query Function name or generalized SQL * @param float $sTime Starting UNIX wall time * @param bool $isWrite Whether this is a write query - * @param integer $n Number of affected rows + * @param int $n Number of affected rows */ public function recordQueryCompletion( $query, $sTime, $isWrite = false, $n = 0 ) { $eTime = microtime( true ); @@ -211,11 +212,11 @@ class TransactionProfiler implements LoggerAwareInterface { } // Report when too many writes/queries happen... - if ( $this->hits['queries']++ == $this->expect['queries'] ) { - $this->reportExpectationViolated( 'queries', $query ); + if ( $this->hits['queries']++ >= $this->expect['queries'] ) { + $this->reportExpectationViolated( 'queries', $query, $this->hits['queries'] ); } - if ( $isWrite && $this->hits['writes']++ == $this->expect['writes'] ) { - $this->reportExpectationViolated( 'writes', $query ); + if ( $isWrite && $this->hits['writes']++ >= $this->expect['writes'] ) { + $this->reportExpectationViolated( 'writes', $query, $this->hits['writes'] ); } // Report slow queries... if ( !$isWrite && $elapsed > $this->expect['readQueryTime'] ) { @@ -265,7 +266,7 @@ class TransactionProfiler implements LoggerAwareInterface { * @param string $db DB name * @param string $id ID string of transaction * @param float $writeTime Time spent in write queries - * @param integer $affected Number of rows affected by writes + * @param int $affected Number of rows affected by writes */ public function transactionWritingOut( $server, $db, $id, $writeTime = 0.0, $affected = 0 ) { $name = "{$server} ({$db}) (TRX#$id)"; @@ -328,20 +329,23 @@ class TransactionProfiler implements LoggerAwareInterface { /** * @param string $expect * @param string $query - * @param string|float|int $actual [optional] + * @param string|float|int $actual */ - protected function reportExpectationViolated( $expect, $query, $actual = null ) { + protected function reportExpectationViolated( $expect, $query, $actual ) { if ( $this->silenced ) { return; } - $n = $this->expect[$expect]; - $by = $this->expectBy[$expect]; - $actual = ( $actual !== null ) ? " (actual: $actual)" : ""; - $this->logger->info( - "Expectation ($expect <= $n) by $by not met$actual:\n$query\n" . - ( new RuntimeException() )->getTraceAsString() + "Expectation ({measure} <= {max}) by {by} not met (actual: {actual}):\n{query}\n" . + ( new RuntimeException() )->getTraceAsString(), + [ + 'measure' => $expect, + 'max' => $this->expect[$expect], + 'by' => $this->expectBy[$expect], + 'actual' => $actual, + 'query' => $query + ] ); } }