Page MenuHomePhabricator

Special:AccountRecovery causing TransactionProfiler warnings in POST requests
Closed, ResolvedPublic

Description

Summary

Special:AccountRecovery is causing TransactionProfiler warnings in POST requests because it's not marked as performing writes

Technical details

message
Expectation (writes <= 0) by MediaWiki\SpecialPage\SpecialPageFactory::executePath not met (actual: 1) in trx #191b217c67:
role-primary: INSERT INTO `cu_private_event` (cupe_namespace,cupe_title,cupe_log_type,cupe_log_action,cupe_params,cupe_page,cupe_actor,cupe_timestamp,cupe_ip_hex,cupe_xff,cupe_xff_hex,cupe_comment_id,cupe_agent_id) VALUES '?'
exeception.trace
from /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/TransactionProfiler.php(569)
#0 /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/TransactionProfiler.php(371): Wikimedia\Rdbms\TransactionProfiler->reportExpectationViolated(string, Wikimedia\Rdbms\GeneralizedSql, int, string, string)
#1 /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/Database/TransactionManager.php(571): Wikimedia\Rdbms\TransactionProfiler->recordQueryCompletion(Wikimedia\Rdbms\GeneralizedSql, float, bool, int, string, string)
#2 /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/Database/Database.php(847): Wikimedia\Rdbms\TransactionManager->recordQueryCompletion(Wikimedia\Rdbms\GeneralizedSql, float, bool, int, string)
#3 /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/Database/Database.php(705): Wikimedia\Rdbms\Database->attemptQuery(Wikimedia\Rdbms\Query, string, bool)
#4 /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/Database/Database.php(632): Wikimedia\Rdbms\Database->executeQuery(Wikimedia\Rdbms\Query, string, int)
#5 /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/Database/Database.php(1506): Wikimedia\Rdbms\Database->query(Wikimedia\Rdbms\Query, string)
#6 /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/Database/DBConnRef.php(129): Wikimedia\Rdbms\Database->insert(string, array, string, array)
#7 /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/Database/DBConnRef.php(457): Wikimedia\Rdbms\DBConnRef->__call(string, array)
#8 /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/QueryBuilder/InsertQueryBuilder.php(317): Wikimedia\Rdbms\DBConnRef->insert(string, array, string, array)
#9 /srv/mediawiki/php-1.46.0-wmf.17/extensions/CheckUser/src/Services/CheckUserInsert.php(406): Wikimedia\Rdbms\InsertQueryBuilder->execute()
#10 /srv/mediawiki/php-1.46.0-wmf.17/extensions/CheckUser/src/Services/CheckUserInsert.php(164): MediaWiki\Extension\CheckUser\Services\CheckUserInsert->insertIntoCuPrivateEventTable(array, string, MediaWiki\User\UserIdentityValue, MediaWiki\RecentChanges\RecentChange, bool)
#11 /srv/mediawiki/php-1.46.0-wmf.17/extensions/EmailAuth/includes/EmailAuthCheckUserLogger.php(62): MediaWiki\Extension\CheckUser\Services\CheckUserInsert->updateCheckUserData(MediaWiki\RecentChanges\RecentChange)
#12 /srv/mediawiki/php-1.46.0-wmf.17/extensions/EmailAuth/includes/EmailAuthCheckUserLogger.php(46): MediaWiki\Extension\EmailAuth\EmailAuthCheckUserLogger->log(MediaWiki\User\UserIdentityValue, string)
#13 /srv/mediawiki/php-1.46.0-wmf.17/extensions/EmailAuth/includes/AccountRecovery/Special/SpecialAccountRecovery.php(229): MediaWiki\Extension\EmailAuth\EmailAuthCheckUserLogger->logAccountRecoverySubmission(MediaWiki\User\UserIdentityValue)
#14 /srv/mediawiki/php-1.46.0-wmf.17/includes/HTMLForm/HTMLForm.php(820): MediaWiki\Extension\EmailAuth\AccountRecovery\Special\SpecialAccountRecovery->onSubmit(array, MediaWiki\HTMLForm\OOUIHTMLForm)
#15 /srv/mediawiki/php-1.46.0-wmf.17/includes/HTMLForm/HTMLForm.php(669): MediaWiki\HTMLForm\HTMLForm->trySubmit()
#16 /srv/mediawiki/php-1.46.0-wmf.17/includes/HTMLForm/HTMLForm.php(717): MediaWiki\HTMLForm\HTMLForm->tryAuthorizedSubmit()
#17 /srv/mediawiki/php-1.46.0-wmf.17/includes/SpecialPage/FormSpecialPage.php(195): MediaWiki\HTMLForm\HTMLForm->show()
#18 /srv/mediawiki/php-1.46.0-wmf.17/extensions/EmailAuth/includes/AccountRecovery/Special/SpecialAccountRecovery.php(53): MediaWiki\SpecialPage\FormSpecialPage->execute(null)
#19 /srv/mediawiki/php-1.46.0-wmf.17/includes/SpecialPage/SpecialPage.php(711): MediaWiki\Extension\EmailAuth\AccountRecovery\Special\SpecialAccountRecovery->execute(null)
#20 /srv/mediawiki/php-1.46.0-wmf.17/includes/SpecialPage/SpecialPageFactory.php(1745): MediaWiki\SpecialPage\SpecialPage->run(null)
#21 /srv/mediawiki/php-1.46.0-wmf.17/includes/Actions/ActionEntryPoint.php(504): MediaWiki\SpecialPage\SpecialPageFactory->executePath(string, MediaWiki\Context\RequestContext)
#22 /srv/mediawiki/php-1.46.0-wmf.17/includes/Actions/ActionEntryPoint.php(144): MediaWiki\Actions\ActionEntryPoint->performRequest()
#23 /srv/mediawiki/php-1.46.0-wmf.17/includes/MediaWikiEntryPoint.php(180): MediaWiki\Actions\ActionEntryPoint->execute()
#24 /srv/mediawiki/php-1.46.0-wmf.17/index.php(44): MediaWiki\MediaWikiEntryPoint->run()
#25 /srv/mediawiki/w/index.php(3): require(string)
#26 {main}

Acceptance criteria

  • The TransactionProfiler warning above no longer is created

Event Timeline

Change #1247044 had a related patch set uploaded (by Dreamy Jazz; author: Dreamy Jazz):

[mediawiki/extensions/EmailAuth@master] Mark SpecialAccountRecovery as performing writes on POST requests

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

Change #1247044 merged by jenkins-bot:

[mediawiki/extensions/EmailAuth@master] Mark SpecialAccountRecovery as performing writes on POST requests

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

QA will be verifying that the TransactionProfiler log no longer appears, probably easiest by verifying on production

No logs since the 5th, so appears resolved