Add "PostSend" limits to $wgTrxProfilerLimits
authorAaron Schulz <aschulz@wikimedia.org>
Wed, 8 Jun 2016 17:47:53 +0000 (10:47 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Wed, 8 Jun 2016 17:47:53 +0000 (10:47 -0700)
This makes post-send updates subject to logging, like other
updates in POST requests. Previously, slow queries were ignored.

Bug: T137326
Change-Id: Ia08f51a10b7b1fae3350f5c5215fab234edefada

includes/DefaultSettings.php
includes/MediaWiki.php

index 0fe3388..7892a98 100644 (file)
@@ -5978,6 +5978,12 @@ $wgTrxProfilerLimits = [
                'writes' => 0,
                'readQueryTime' => 5
        ],
+       // Deferred updates that run after HTTP response is sent
+       'PostSend' => [
+               'readQueryTime' => 5,
+               'writeQueryTime' => 1,
+               'maxAffected' => 500
+       ],
        // Background job runner
        'JobRunner' => [
                'readQueryTime' => 30,
index ee03f02..21857b9 100644 (file)
@@ -764,9 +764,13 @@ class MediaWiki {
                // Assure deferred updates are not in the main transaction
                wfGetLBFactory()->commitMasterChanges( __METHOD__ );
 
-               // Ignore things like master queries/connections on GET requests
-               // as long as they are in deferred updates (which catch errors).
-               Profiler::instance()->getTransactionProfiler()->resetExpectations();
+               // Loosen DB query expectations since the HTTP client is unblocked
+               $trxProfiler = Profiler::instance()->getTransactionProfiler();
+               $trxProfiler->resetExpectations();
+               $trxProfiler->setExpectations(
+                       $this->config->get( 'TrxProfilerLimits' )['PostSend'],
+                       __METHOD__
+               );
 
                // Do any deferred jobs
                DeferredUpdates::doUpdates( 'enqueue' );