Steps to replicate the issue (include links if applicable):
- Use PageForms on a wiki with multiple (primary-replica) DB servers
What happens?:
A TransactionProfiler warning is logged for pageviews, example:
Expectation (masterConns <= 0) by MediaWiki::main not met (actual: 1): [connect to geo-db-c-master.query.consul. (mfbeyblade)] RuntimeException from line 467 of /includes/libs/rdbms/TransactionProfiler.php: #0 /includes/libs/rdbms/TransactionProfiler.php(222): Wikimedia\Rdbms\TransactionProfiler->reportExpectationViolated(string, string, integer) #1 /includes/libs/rdbms/loadbalancer/LoadBalancer.php(983): Wikimedia\Rdbms\TransactionProfiler->recordConnection(string, string, boolean) #2 /includes/libs/rdbms/loadbalancer/LoadBalancer.php(944): Wikimedia\Rdbms\LoadBalancer->getServerConnection(integer, string, integer) #3 /extensions/fandom/FandomIncludes/src/Database/FandomLoadBalancer.php(104): Wikimedia\Rdbms\LoadBalancer->getConnectionInternal(integer, array, string, integer) #4 /includes/libs/rdbms/database/DBConnRef.php(95): Fandom\Includes\Database\FandomLoadBalancer->getConnectionInternal(integer, array, string, integer) #5 /includes/libs/rdbms/database/DBConnRef.php(101): Wikimedia\Rdbms\DBConnRef->ensureConnection() #6 /includes/libs/rdbms/database/DBConnRef.php(392): Wikimedia\Rdbms\DBConnRef->__call(string, array) #7 /includes/block/DatabaseBlock.php(270): Wikimedia\Rdbms\DBConnRef->makeList(array, integer) #8 /includes/block/DatabaseBlock.php(890): MediaWiki\Block\DatabaseBlock::newLoad(User, integer, boolean, string) #9 /includes/block/BlockManager.php(161): MediaWiki\Block\DatabaseBlock::newListFromTarget(User, string, boolean) #10 /includes/user/User.php(1447): MediaWiki\Block\BlockManager->getUserBlock(User, WebRequest, boolean, boolean) #11 /includes/user/User.php(1545): User->getBlockedStatus(boolean, boolean) #12 /includes/Permissions/PermissionManager.php(814): User->getBlock(integer) #13 /includes/Permissions/PermissionManager.php(538): MediaWiki\Permissions\PermissionManager->checkUserBlock(string, User, array, string, boolean, Title) #14 /includes/Permissions/PermissionManager.php(1228): MediaWiki\Permissions\PermissionManager->getPermissionErrorsInternal(string, User, Title, string, boolean) #15 /includes/Permissions/PermissionManager.php(538): MediaWiki\Permissions\PermissionManager->checkActionPermissions(string, User, array, string, boolean, Title) #16 /includes/Permissions/PermissionManager.php(299): MediaWiki\Permissions\PermissionManager->getPermissionErrorsInternal(string, User, Title, string, boolean) #17 /extensions/PageForms/includes/PF_HelperFormAction.php(83): MediaWiki\Permissions\PermissionManager->userCan(string, User, Title) #18 /includes/HookContainer/HookContainer.php(338): PFHelperFormAction::displayTab(Fandom\FandomDesktop\SkinFandomDesktop, array) #19 /includes/HookContainer/HookContainer.php(137): MediaWiki\HookContainer\HookContainer->callLegacyHook(string, array, array, array) #20 /includes/HookContainer/HookRunner.php(3542): MediaWiki\HookContainer\HookContainer->run(string, array, array) #21 /includes/skins/SkinTemplate.php(1203): MediaWiki\HookContainer\HookRunner->onSkinTemplateNavigation__Universal(Fandom\FandomDesktop\SkinFandomDesktop, array) #22 /includes/skins/SkinTemplate.php(1574): SkinTemplate->runOnSkinTemplateNavigationHooks(Fandom\FandomDesktop\SkinFandomDesktop, array) #23 /includes/skins/SkinTemplate.php(790): SkinTemplate->buildContentNavigationUrlsInternal() #24 /includes/skins/SkinTemplate.php(762): SkinTemplate->getPortletsTemplateData() #25 /includes/skins/Skin.php(667): SkinTemplate->getCategoryLinks() #26 /includes/skins/SkinTemplate.php(259): Skin->getCategories() #27 /skins/FandomDesktop/src/SkinFandomDesktop.php(105): SkinTemplate->prepareQuickTemplate() #28 /includes/skins/SkinTemplate.php(146): Fandom\FandomDesktop\SkinFandomDesktop->prepareQuickTemplate() #29 /includes/skins/SkinTemplate.php(177): SkinTemplate->generateHTML() #30 /includes/OutputPage.php(2876): SkinTemplate->outputPage() #31 /includes/MediaWiki.php(922): OutputPage->output(boolean) #32 /includes/MediaWiki.php(562): MediaWiki->main() #33 /index.php(50): MediaWiki->run() #34 /index.php(46): wfIndexMain()
What should have happened instead?:
PageForms should generate no TransactionProfiler warnings on pageviews
Software version (skip for WMF-hosted wikis like Wikipedia):
MW 1.39 with PageForms 5.6