From: Aaron Schulz Date: Tue, 4 Dec 2018 21:03:59 +0000 (-0500) Subject: Add TransactionProfiler::redefineExpectations and migrate appropriate callers X-Git-Tag: 1.34.0-rc.0~3264^2 X-Git-Url: http://git.cyclocoop.org/data/%7BGarradin/WEBSITE%7D?a=commitdiff_plain;h=b1b67c9ac63606a8087324bf65cd6b0598fe69dd;p=lhc%2Fweb%2Fwiklou.git Add TransactionProfiler::redefineExpectations and migrate appropriate callers Some of the callers of setExpectations() actually need to reset the old expectations to avoid erroneous warnings. Change-Id: I63c01c0f6cd748bdc849f1a5264e17bd377b9d11 --- diff --git a/includes/MediaWiki.php b/includes/MediaWiki.php index 267b589ae8..f5a954dc8d 100644 --- a/includes/MediaWiki.php +++ b/includes/MediaWiki.php @@ -893,8 +893,7 @@ class MediaWiki { // Loosen DB query expectations since the HTTP client is unblocked $trxProfiler = Profiler::instance()->getTransactionProfiler(); - $trxProfiler->resetExpectations(); - $trxProfiler->setExpectations( + $trxProfiler->redefineExpectations( $this->context->getRequest()->hasSafeMethod() ? $this->config->get( 'TrxProfilerLimits' )['PostSend-GET'] : $this->config->get( 'TrxProfilerLimits' )['PostSend-POST'], diff --git a/includes/actions/RollbackAction.php b/includes/actions/RollbackAction.php index 3e6d4028a4..03a5bc840a 100644 --- a/includes/actions/RollbackAction.php +++ b/includes/actions/RollbackAction.php @@ -73,9 +73,9 @@ class RollbackAction extends FormlessAction { $fname = __METHOD__; $trxLimits = $this->context->getConfig()->get( 'TrxProfilerLimits' ); $trxProfiler = Profiler::instance()->getTransactionProfiler(); - $trxProfiler->setExpectations( $trxLimits['POST'], $fname ); + $trxProfiler->redefineExpectations( $trxLimits['POST'], $fname ); DeferredUpdates::addCallableUpdate( function () use ( $trxProfiler, $trxLimits, $fname ) { - $trxProfiler->setExpectations( $trxLimits['PostSend-POST'], $fname ); + $trxProfiler->redefineExpectations( $trxLimits['PostSend-POST'], $fname ); } ); $data = null; diff --git a/includes/api/ApiRollback.php b/includes/api/ApiRollback.php index 78696daa28..18aa6daa66 100644 --- a/includes/api/ApiRollback.php +++ b/includes/api/ApiRollback.php @@ -59,9 +59,9 @@ class ApiRollback extends ApiBase { $fname = __METHOD__; $trxLimits = $this->getConfig()->get( 'TrxProfilerLimits' ); $trxProfiler = Profiler::instance()->getTransactionProfiler(); - $trxProfiler->setExpectations( $trxLimits['POST'], $fname ); + $trxProfiler->redefineExpectations( $trxLimits['POST'], $fname ); DeferredUpdates::addCallableUpdate( function () use ( $trxProfiler, $trxLimits, $fname ) { - $trxProfiler->setExpectations( $trxLimits['PostSend-POST'], $fname ); + $trxProfiler->redefineExpectations( $trxLimits['PostSend-POST'], $fname ); } ); $retval = $pageObj->doRollback( diff --git a/includes/libs/rdbms/TransactionProfiler.php b/includes/libs/rdbms/TransactionProfiler.php index 8ea28f0a65..e4dad01dda 100644 --- a/includes/libs/rdbms/TransactionProfiler.php +++ b/includes/libs/rdbms/TransactionProfiler.php @@ -114,10 +114,12 @@ class TransactionProfiler implements LoggerAwareInterface { } /** - * Set multiple performance expectations + * Set one or multiple performance expectations * * With conflicting expectations, the most narrow ones will be used * + * Use this to initialize expectations or make them stricter mid-request + * * @param array $expects Map of (event => limit) * @param string $fname * @since 1.26 @@ -129,7 +131,11 @@ class TransactionProfiler implements LoggerAwareInterface { } /** - * Reset performance expectations and hit counters + * Reset all performance expectations and hit counters + * + * Use this for unit testing or before applying a totally different set of expectations + * for a different part of the request, such as during "post-send" (execution after HTTP + * response completion) * * @since 1.25 */ @@ -145,6 +151,21 @@ class TransactionProfiler implements LoggerAwareInterface { $this->expectBy = []; } + /** + * Clear all expectations and hit counters and set new performance expectations + * + * Use this to apply a totally different set of expectations for a different part + * of the request, such as during "post-send" (execution after HTTP response completion) + * + * @param array $expects Map of (event => limit) + * @param string $fname + * @since 1.33 + */ + public function redefineExpectations( array $expects, $fname ) { + $this->resetExpectations(); + $this->setExpectations( $expects, $fname ); + } + /** * Mark a DB as having been connected to with a new handle *