Summary
ThreadItemStore::findNewestRevisionsByHeading is interacting with the primary DB on GET requests to use methods such as IReadableDatabase::anyString and IReadableDatabaes::expr. This is causing 60,000 TransactionProfiler warnings a week. Instead a replica DB connection should be used to interact with these methods, as fetching the primary DB may cause MediaWiki to interact with the primary database itself (even without performing queries)
Error
Expectation (masterConns <= 0) by MediaWiki\Api\ApiMain::setRequestExpectations not met (actual: 1): [connect to db2212 (enwiki)]
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(302): Wikimedia\Rdbms\TransactionProfiler->reportExpectationViolated(string, string, int)
#1 /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/LoadBalancer/LoadBalancer.php(810): Wikimedia\Rdbms\TransactionProfiler->recordConnection(string, string, bool)
#2 /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/LoadBalancer/LoadBalancer.php(789): Wikimedia\Rdbms\LoadBalancer->getServerConnection(int, string, int)
#3 /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/Database/DBConnRef.php(109): Wikimedia\Rdbms\LoadBalancer->getConnectionInternal(int, array, string, int)
#4 /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/Database/DBConnRef.php(127): Wikimedia\Rdbms\DBConnRef->ensureConnection()
#5 /srv/mediawiki/php-1.46.0-wmf.17/includes/libs/Rdbms/Database/DBConnRef.php(638): Wikimedia\Rdbms\DBConnRef->__call(string, array)
#6 /srv/mediawiki/php-1.46.0-wmf.17/extensions/DiscussionTools/includes/ThreadItemStore.php(187): Wikimedia\Rdbms\DBConnRef->anyString()
#7 /srv/mediawiki/php-1.46.0-wmf.17/extensions/DiscussionTools/includes/ApiDiscussionToolsFindComment.php(60): MediaWiki\Extension\DiscussionTools\ThreadItemStore->findNewestRevisionsByHeading(string, int, MediaWiki\Title\TitleValue)
#8 /srv/mediawiki/php-1.46.0-wmf.17/includes/Api/ApiMain.php(2062): MediaWiki\Extension\DiscussionTools\ApiDiscussionToolsFindComment->execute()
#9 /srv/mediawiki/php-1.46.0-wmf.17/includes/Api/ApiMain.php(967): MediaWiki\Api\ApiMain->executeAction()
#10 /srv/mediawiki/php-1.46.0-wmf.17/includes/Api/ApiMain.php(938): MediaWiki\Api\ApiMain->executeActionWithErrorHandling()
#11 /srv/mediawiki/php-1.46.0-wmf.17/includes/Api/ApiEntryPoint.php(138): MediaWiki\Api\ApiMain->execute()
#12 /srv/mediawiki/php-1.46.0-wmf.17/includes/MediaWikiEntryPoint.php(180): MediaWiki\Api\ApiEntryPoint->execute()
#13 /srv/mediawiki/php-1.46.0-wmf.17/api.php(30): MediaWiki\MediaWikiEntryPoint->run()
#14 /srv/mediawiki/w/api.php(3): require(string)
#15 {main}Acceptance criteria
- The TransactionProfiler warnings are no longer created