Aaron Schulz has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/191823

Change subject: Avoid "recent-contributors" queries that cause timeouts
......................................................................

Avoid "recent-contributors" queries that cause timeouts

bug: T90036
Change-Id: I803b06f9eb7a4a61bcb0248520b4144158963983
---
M AbuseFilterVariableHolder.php
1 file changed, 10 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/AbuseFilter 
refs/changes/23/191823/1

diff --git a/AbuseFilterVariableHolder.php b/AbuseFilterVariableHolder.php
index 5783804..f77c1b9 100644
--- a/AbuseFilterVariableHolder.php
+++ b/AbuseFilterVariableHolder.php
@@ -488,14 +488,20 @@
                                }
 
                                $dbr = wfGetDB( DB_SLAVE );
-                               $res = $dbr->select( 'revision',
-                                       'DISTINCT rev_user_text',
+                               $sqlTmp = $dbr->selectSQLText(
+                                       'revision',
+                                       array( 'rev_user_text', 'rev_timestamp' 
),
                                        array(
                                                'rev_page' => 
$title->getArticleID(),
-                                               'rev_timestamp<' . 
$dbr->addQuotes( $dbr->timestamp( $cutOff ) )
+                                               'rev_timestamp < ' . 
$dbr->addQuotes( $dbr->timestamp( $cutOff ) )
                                        ),
                                        __METHOD__,
-                                       array( 'ORDER BY' => 'rev_timestamp 
DESC', 'LIMIT' => 10 )
+                                       // Some pages have < 10 authors but 
many revisions (e.g. bot pages)
+                                       array( 'ORDER BY' => 'rev_timestamp 
DESC', 'LIMIT' => 100 )
+                               );
+                               $res = $dbr->query(
+                                       "SELECT rev_user_text FROM ($sqlTmp) AS 
tmp " .
+                                       "GROUP BY rev_user_text ORDER BY 
MAX(rev_timestamp) DESC LIMIT 10"
                                );
 
                                $users = array();

-- 
To view, visit https://gerrit.wikimedia.org/r/191823
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I803b06f9eb7a4a61bcb0248520b4144158963983
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/AbuseFilter
Gerrit-Branch: master
Gerrit-Owner: Aaron Schulz <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to