Summary
Since the deployment of wmf.10, CheckUser is showing TransactionProfiler warnings related to unexpected writes during local account creation
Background
- Product Safety and Integrity logstash dashboard is showing TransactionProfiler warnings related to logging local account creations since wmf.10 has been deployed: https://logstash.wikimedia.org/goto/d87ee40b35629c62805ee2f333d6b19b
- These warnings are not appearing for the previously deployed wiki version
- Specifically these are one of many TransactionProfiler warnings and are occurring through the URL Special:CentralAutoLogin:
Expectation (writes <= 0) by MediaWiki\Actions\ActionEntryPoint::execute not met (actual: 11) in trx #00d93e6fcb: role-primary: INSERT INTO `cu_log_event` (cule_actor,cule_timestamp,cule_ip,cule_ip_hex,cule_xff,cule_xff_hex,cule_log_id,cule_agent) VALUES '?'
from /srv/mediawiki/php-1.46.0-wmf.10/includes/libs/Rdbms/TransactionProfiler.php(565)
#0 /srv/mediawiki/php-1.46.0-wmf.10/includes/libs/Rdbms/TransactionProfiler.php(367): Wikimedia\Rdbms\TransactionProfiler->reportExpectationViolated(string, Wikimedia\Rdbms\GeneralizedSql, int, string, string)
#1 /srv/mediawiki/php-1.46.0-wmf.10/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.10/includes/libs/Rdbms/Database/Database.php(848): Wikimedia\Rdbms\TransactionManager->recordQueryCompletion(Wikimedia\Rdbms\GeneralizedSql, float, bool, int, string)
#3 /srv/mediawiki/php-1.46.0-wmf.10/includes/libs/Rdbms/Database/Database.php(706): Wikimedia\Rdbms\Database->attemptQuery(Wikimedia\Rdbms\Query, string, bool)
#4 /srv/mediawiki/php-1.46.0-wmf.10/includes/libs/Rdbms/Database/Database.php(633): Wikimedia\Rdbms\Database->executeQuery(Wikimedia\Rdbms\Query, string, int)
#5 /srv/mediawiki/php-1.46.0-wmf.10/includes/libs/Rdbms/Database/Database.php(1507): Wikimedia\Rdbms\Database->query(Wikimedia\Rdbms\Query, string)
#6 /srv/mediawiki/php-1.46.0-wmf.10/includes/libs/Rdbms/Database/DBConnRef.php(129): Wikimedia\Rdbms\Database->insert(string, array, string, array)
#7 /srv/mediawiki/php-1.46.0-wmf.10/includes/libs/Rdbms/Database/DBConnRef.php(457): Wikimedia\Rdbms\DBConnRef->__call(string, array)
#8 /srv/mediawiki/php-1.46.0-wmf.10/includes/libs/Rdbms/QueryBuilder/InsertQueryBuilder.php(340): Wikimedia\Rdbms\DBConnRef->insert(string, array, string, array)
#9 /srv/mediawiki/php-1.46.0-wmf.10/extensions/CheckUser/src/Services/CheckUserInsert.php(336): Wikimedia\Rdbms\InsertQueryBuilder->execute()
#10 /srv/mediawiki/php-1.46.0-wmf.10/extensions/CheckUser/src/HookHandler/CheckUserPrivateEventsHandler.php(188): MediaWiki\CheckUser\Services\CheckUserInsert->insertIntoCuLogEventTable(MediaWiki\Logging\DatabaseLogEntry, string, MediaWiki\User\User)
#11 /srv/mediawiki/php-1.46.0-wmf.10/extensions/CheckUser/src/HookHandler/CheckUserPrivateEventsHandler.php(129): MediaWiki\CheckUser\HookHandler\CheckUserPrivateEventsHandler->insertLogEventForAccountCreation(MediaWiki\User\User, MediaWiki\Logging\DatabaseLogEntry)
#12 /srv/mediawiki/php-1.46.0-wmf.10/includes/libs/Rdbms/Database/TransactionManager.php(723): MediaWiki\CheckUser\HookHandler\CheckUserPrivateEventsHandler->MediaWiki\CheckUser\HookHandler\{closure}()
#13 /srv/mediawiki/php-1.46.0-wmf.10/includes/libs/Rdbms/Database/Database.php(3369): Wikimedia\Rdbms\TransactionManager->runOnTransactionPreCommitCallbacks()
#14 /srv/mediawiki/php-1.46.0-wmf.10/includes/libs/Rdbms/LoadBalancer/LoadBalancer.php(1347): Wikimedia\Rdbms\Database->runOnTransactionPreCommitCallbacks()
#15 /srv/mediawiki/php-1.46.0-wmf.10/includes/libs/Rdbms/LBFactory/LBFactory.php(314): Wikimedia\Rdbms\LoadBalancer->finalizePrimaryChanges(string)
#16 /srv/mediawiki/php-1.46.0-wmf.10/includes/MediaWikiEntryPoint.php(274): Wikimedia\Rdbms\LBFactory->commitPrimaryChanges(string, int)
#17 /srv/mediawiki/php-1.46.0-wmf.10/includes/MediaWikiEntryPoint.php(170): MediaWiki\MediaWikiEntryPoint->commitMainTransaction()
#18 /srv/mediawiki/php-1.46.0-wmf.10/includes/Actions/ActionEntryPoint.php(207): MediaWiki\MediaWikiEntryPoint->doPrepareForOutput()
#19 /srv/mediawiki/php-1.46.0-wmf.10/includes/MediaWikiEntryPoint.php(153): MediaWiki\Actions\ActionEntryPoint->doPrepareForOutput()
#20 /srv/mediawiki/php-1.46.0-wmf.10/includes/Actions/ActionEntryPoint.php(154): MediaWiki\MediaWikiEntryPoint->prepareForOutput()
#21 /srv/mediawiki/php-1.46.0-wmf.10/includes/MediaWikiEntryPoint.php(181): MediaWiki\Actions\ActionEntryPoint->execute()
#22 /srv/mediawiki/php-1.46.0-wmf.10/index.php(44): MediaWiki\MediaWikiEntryPoint->run()
#23 /srv/mediawiki/w/index.php(3): require(string)
#24 {main}Technical details
- Likely the best way to address this is to suppress the TransactionProfiler warnings, as the local account creation will have already created other warnings such as those created by making the local user row
- We can do this using the recently added $silenceReplicaWarnings arguments to the CheckUserInsert methods used to insert the local account creation entry into CheckUser database tables
Acceptance criteria
- These logstash TransactionProfiler warnings no longer appear