I was looking at some dashboards (classic mistake) and noticed that on 2024-09-05, the volume of rdbms WARNING logs, already high on a good day, has increased by about 20 times.
https://logstash.wikimedia.org/goto/184d12a2dfda698ecd364078a8198daf
Most of the increase can be attributed to warnings like "Expectation (masterConns <= 0) by ApiMain::setRequestExpectations not met" with ExternalStoreDB in the stack trace.
https://logstash.wikimedia.org/goto/c0ca043c67ccadda3cdc0d4d2be249ff
They happen in a variety of API requests that fetch revisions from the external store. Some example stack traces:
from /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/TransactionProfiler.php(526)
#0 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/TransactionProfiler.php(265): Wikimedia\Rdbms\TransactionProfiler->reportExpectationViolated(string, string, int)
#1 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/loadbalancer/LoadBalancer.php(804): Wikimedia\Rdbms\TransactionProfiler->recordConnection(string, string, bool)
#2 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/loadbalancer/LoadBalancer.php(781): Wikimedia\Rdbms\LoadBalancer->getServerConnection(int, string, int)
#3 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/database/DBConnRef.php(111): Wikimedia\Rdbms\LoadBalancer->getConnectionInternal(int, array, string, int)
#4 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/database/DBConnRef.php(125): Wikimedia\Rdbms\DBConnRef->ensureConnection()
#5 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/database/DBConnRef.php(338): Wikimedia\Rdbms\DBConnRef->__call(string, array)
#6 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/querybuilder/SelectQueryBuilder.php(764): Wikimedia\Rdbms\DBConnRef->selectField(array, string, array, string, array, array)
#7 /srv/mediawiki/php-1.43.0-wmf.21/includes/externalstore/ExternalStoreDB.php(312): Wikimedia\Rdbms\SelectQueryBuilder->fetchField()
#8 /srv/mediawiki/php-1.43.0-wmf.21/includes/externalstore/ExternalStoreDB.php(67): ExternalStoreDB->fetchBlob(string, string, bool)
#9 /srv/mediawiki/php-1.43.0-wmf.21/includes/externalstore/ExternalStoreAccess.php(73): ExternalStoreDB->fetchFromURL(string)
#10 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(571): ExternalStoreAccess->fetchFromURL(string, array)
#11 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/objectcache/wancache/WANObjectCache.php(1729): MediaWiki\Storage\SqlBlobStore->MediaWiki\Storage\{closure}(bool, int, array, null, array)
#12 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/objectcache/wancache/WANObjectCache.php(1559): WANObjectCache->fetchOrRegenerate(string, int, Closure, array, array)
#13 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(575): WANObjectCache->getWithSetCallback(string, int, Closure, array)
#14 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(438): MediaWiki\Storage\SqlBlobStore->expandBlob(string, array, string)
#15 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(264): MediaWiki\Storage\SqlBlobStore->fetchBlobs(array, int)
#16 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/objectcache/wancache/WANObjectCache.php(1729): MediaWiki\Storage\SqlBlobStore->MediaWiki\Storage\{closure}(bool, int, array, null, array)
#17 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/objectcache/wancache/WANObjectCache.php(1559): WANObjectCache->fetchOrRegenerate(string, int, Closure, array, array)
#18 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(272): WANObjectCache->getWithSetCallback(string, int, Closure, array)
#19 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RevisionStore.php(1208): MediaWiki\Storage\SqlBlobStore->getBlob(string, int)
#20 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RevisionStore.php(1519): MediaWiki\Revision\RevisionStore->loadSlotContent(MediaWiki\Revision\SlotRecord, null, null, null, int)
#21 [internal function]: MediaWiki\Revision\RevisionStore->MediaWiki\Revision\{closure}(MediaWiki\Revision\SlotRecord)
#22 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/SlotRecord.php(324): call_user_func(Closure, MediaWiki\Revision\SlotRecord)
#23 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RevisionRecord.php(158): MediaWiki\Revision\SlotRecord->getContent()
#24 /srv/mediawiki/php-1.43.0-wmf.21/includes/page/WikiPage.php(770): MediaWiki\Revision\RevisionRecord->getContent(string, int, null)
#25 /srv/mediawiki/php-1.43.0-wmf.21/extensions/CirrusSearch/includes/Sanity/Checker.php(244): WikiPage->getContent()
#26 /srv/mediawiki/php-1.43.0-wmf.21/extensions/CirrusSearch/includes/Sanity/Checker.php(216): CirrusSearch\Sanity\Checker->checkIfRedirect(WikiPage)
#27 /srv/mediawiki/php-1.43.0-wmf.21/extensions/CirrusSearch/includes/Sanity/Checker.php(172): CirrusSearch\Sanity\Checker->checkExisitingPage(string, int, WikiPage, array)
#28 /srv/mediawiki/php-1.43.0-wmf.21/extensions/CirrusSearch/includes/Api/CheckSanity.php(104): CirrusSearch\Sanity\Checker->check(array)
#29 /srv/mediawiki/php-1.43.0-wmf.21/extensions/CirrusSearch/includes/Api/CheckSanity.php(60): CirrusSearch\Api\CheckSanity->check(CirrusSearch\Sanity\Checker, int, int)
#30 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiMain.php(1948): CirrusSearch\Api\CheckSanity->execute()
#31 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiMain.php(926): ApiMain->executeAction()
#32 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiMain.php(897): ApiMain->executeActionWithErrorHandling()
#33 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiEntryPoint.php(153): ApiMain->execute()
#34 /srv/mediawiki/php-1.43.0-wmf.21/includes/MediaWikiEntryPoint.php(200): MediaWiki\Api\ApiEntryPoint->execute()
#35 /srv/mediawiki/php-1.43.0-wmf.21/api.php(44): MediaWiki\MediaWikiEntryPoint->run()
#36 /srv/mediawiki/w/api.php(3): require(string)
#37 {main}from /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/TransactionProfiler.php(526)
#0 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/TransactionProfiler.php(265): Wikimedia\Rdbms\TransactionProfiler->reportExpectationViolated(string, string, int)
#1 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/loadbalancer/LoadBalancer.php(804): Wikimedia\Rdbms\TransactionProfiler->recordConnection(string, string, bool)
#2 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/loadbalancer/LoadBalancer.php(781): Wikimedia\Rdbms\LoadBalancer->getServerConnection(int, string, int)
#3 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/database/DBConnRef.php(111): Wikimedia\Rdbms\LoadBalancer->getConnectionInternal(int, array, string, int)
#4 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/database/DBConnRef.php(125): Wikimedia\Rdbms\DBConnRef->ensureConnection()
#5 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/database/DBConnRef.php(338): Wikimedia\Rdbms\DBConnRef->__call(string, array)
#6 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/querybuilder/SelectQueryBuilder.php(764): Wikimedia\Rdbms\DBConnRef->selectField(array, string, array, string, array, array)
#7 /srv/mediawiki/php-1.43.0-wmf.21/includes/externalstore/ExternalStoreDB.php(312): Wikimedia\Rdbms\SelectQueryBuilder->fetchField()
#8 /srv/mediawiki/php-1.43.0-wmf.21/includes/externalstore/ExternalStoreDB.php(67): ExternalStoreDB->fetchBlob(string, string, bool)
#9 /srv/mediawiki/php-1.43.0-wmf.21/includes/externalstore/ExternalStoreAccess.php(73): ExternalStoreDB->fetchFromURL(string)
#10 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(571): ExternalStoreAccess->fetchFromURL(string, array)
#11 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/objectcache/wancache/WANObjectCache.php(1729): MediaWiki\Storage\SqlBlobStore->MediaWiki\Storage\{closure}(bool, int, array, null, array)
#12 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/objectcache/wancache/WANObjectCache.php(1559): WANObjectCache->fetchOrRegenerate(string, int, Closure, array, array)
#13 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(575): WANObjectCache->getWithSetCallback(string, int, Closure, array)
#14 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(438): MediaWiki\Storage\SqlBlobStore->expandBlob(string, array, string)
#15 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(264): MediaWiki\Storage\SqlBlobStore->fetchBlobs(array, int)
#16 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/objectcache/wancache/WANObjectCache.php(1729): MediaWiki\Storage\SqlBlobStore->MediaWiki\Storage\{closure}(bool, int, array, null, array)
#17 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/objectcache/wancache/WANObjectCache.php(1559): WANObjectCache->fetchOrRegenerate(string, int, Closure, array, array)
#18 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(272): WANObjectCache->getWithSetCallback(string, int, Closure, array)
#19 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RevisionStore.php(1208): MediaWiki\Storage\SqlBlobStore->getBlob(string, int)
#20 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RevisionStore.php(1519): MediaWiki\Revision\RevisionStore->loadSlotContent(MediaWiki\Revision\SlotRecord, null, null, null, int)
#21 [internal function]: MediaWiki\Revision\RevisionStore->MediaWiki\Revision\{closure}(MediaWiki\Revision\SlotRecord)
#22 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/SlotRecord.php(324): call_user_func(Closure, MediaWiki\Revision\SlotRecord)
#23 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiQueryRevisionsBase.php(605): MediaWiki\Revision\SlotRecord->getContent()
#24 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiQueryRevisionsBase.php(532): ApiQueryRevisionsBase->extractSlotInfo(MediaWiki\Revision\SlotRecord, int, null)
#25 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiQueryRevisionsBase.php(426): ApiQueryRevisionsBase->extractAllSlotInfo(MediaWiki\Revision\RevisionStoreRecord, int)
#26 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiQueryRevisions.php(439): ApiQueryRevisionsBase->extractRevisionInfo(MediaWiki\Revision\RevisionStoreRecord, stdClass)
#27 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiQueryRevisionsBase.php(166): ApiQueryRevisions->run()
#28 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiQuery.php(711): ApiQueryRevisionsBase->execute()
#29 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiMain.php(1948): ApiQuery->execute()
#30 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiMain.php(926): ApiMain->executeAction()
#31 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiMain.php(897): ApiMain->executeActionWithErrorHandling()
#32 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiEntryPoint.php(153): ApiMain->execute()
#33 /srv/mediawiki/php-1.43.0-wmf.21/includes/MediaWikiEntryPoint.php(200): MediaWiki\Api\ApiEntryPoint->execute()
#34 /srv/mediawiki/php-1.43.0-wmf.21/api.php(44): MediaWiki\MediaWikiEntryPoint->run()
#35 /srv/mediawiki/w/api.php(3): require(string)
#36 {main}from /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/TransactionProfiler.php(526)
#0 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/TransactionProfiler.php(265): Wikimedia\Rdbms\TransactionProfiler->reportExpectationViolated(string, string, int)
#1 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/loadbalancer/LoadBalancer.php(804): Wikimedia\Rdbms\TransactionProfiler->recordConnection(string, string, bool)
#2 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/loadbalancer/LoadBalancer.php(781): Wikimedia\Rdbms\LoadBalancer->getServerConnection(int, string, int)
#3 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/database/DBConnRef.php(111): Wikimedia\Rdbms\LoadBalancer->getConnectionInternal(int, array, string, int)
#4 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/database/DBConnRef.php(125): Wikimedia\Rdbms\DBConnRef->ensureConnection()
#5 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/database/DBConnRef.php(338): Wikimedia\Rdbms\DBConnRef->__call(string, array)
#6 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/rdbms/querybuilder/SelectQueryBuilder.php(764): Wikimedia\Rdbms\DBConnRef->selectField(array, string, array, string, array, array)
#7 /srv/mediawiki/php-1.43.0-wmf.21/includes/externalstore/ExternalStoreDB.php(312): Wikimedia\Rdbms\SelectQueryBuilder->fetchField()
#8 /srv/mediawiki/php-1.43.0-wmf.21/includes/externalstore/ExternalStoreDB.php(67): ExternalStoreDB->fetchBlob(string, string, bool)
#9 /srv/mediawiki/php-1.43.0-wmf.21/includes/externalstore/ExternalStoreAccess.php(73): ExternalStoreDB->fetchFromURL(string)
#10 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(571): ExternalStoreAccess->fetchFromURL(string, array)
#11 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/objectcache/wancache/WANObjectCache.php(1729): MediaWiki\Storage\SqlBlobStore->MediaWiki\Storage\{closure}(bool, int, array, null, array)
#12 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/objectcache/wancache/WANObjectCache.php(1559): WANObjectCache->fetchOrRegenerate(string, int, Closure, array, array)
#13 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(575): WANObjectCache->getWithSetCallback(string, int, Closure, array)
#14 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(438): MediaWiki\Storage\SqlBlobStore->expandBlob(string, array, string)
#15 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(264): MediaWiki\Storage\SqlBlobStore->fetchBlobs(array, int)
#16 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/objectcache/wancache/WANObjectCache.php(1729): MediaWiki\Storage\SqlBlobStore->MediaWiki\Storage\{closure}(bool, int, array, null, array)
#17 /srv/mediawiki/php-1.43.0-wmf.21/includes/libs/objectcache/wancache/WANObjectCache.php(1559): WANObjectCache->fetchOrRegenerate(string, int, Closure, array, array)
#18 /srv/mediawiki/php-1.43.0-wmf.21/includes/Storage/SqlBlobStore.php(272): WANObjectCache->getWithSetCallback(string, int, Closure, array)
#19 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RevisionStore.php(1208): MediaWiki\Storage\SqlBlobStore->getBlob(string, int)
#20 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RevisionStore.php(1519): MediaWiki\Revision\RevisionStore->loadSlotContent(MediaWiki\Revision\SlotRecord, null, null, null, int)
#21 [internal function]: MediaWiki\Revision\RevisionStore->MediaWiki\Revision\{closure}(MediaWiki\Revision\SlotRecord)
#22 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/SlotRecord.php(324): call_user_func(Closure, MediaWiki\Revision\SlotRecord)
#23 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RevisionRecord.php(183): MediaWiki\Revision\SlotRecord->getContent()
#24 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RenderedRevision.php(231): MediaWiki\Revision\RevisionRecord->getContentOrThrow(string, int, null)
#25 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RevisionRenderer.php(234): MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#26 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RevisionRenderer.php(170): MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, ParserOptions, array)
#27 [internal function]: MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#28 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RenderedRevision.php(199): call_user_func(Closure, MediaWiki\Revision\RenderedRevision, array)
#29 /srv/mediawiki/php-1.43.0-wmf.21/includes/page/ParserOutputAccess.php(443): MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#30 /srv/mediawiki/php-1.43.0-wmf.21/includes/page/ParserOutputAccess.php(362): MediaWiki\Page\ParserOutputAccess->renderRevision(WikiPage, ParserOptions, MediaWiki\Revision\RevisionStoreRecord, int, null)
#31 /srv/mediawiki/php-1.43.0-wmf.21/includes/page/WikiPage.php(1126): MediaWiki\Page\ParserOutputAccess->getParserOutput(WikiPage, ParserOptions, MediaWiki\Revision\RevisionStoreRecord, int)
#32 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiParse.php(194): WikiPage->getParserOutput(ParserOptions, null, bool)
#33 /srv/mediawiki/php-1.43.0-wmf.21/includes/poolcounter/PoolCounterWorkViaCallback.php(73): ApiParse::{closure}()
#34 /srv/mediawiki/php-1.43.0-wmf.21/includes/poolcounter/PoolCounterWork.php(171): MediaWiki\PoolCounter\PoolCounterWorkViaCallback->doWork()
#35 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiParse.php(201): MediaWiki\PoolCounter\PoolCounterWork->execute()
#36 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiParse.php(859): ApiParse->getPageParserOutput(WikiPage, null, ParserOptions, bool)
#37 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiParse.php(326): ApiParse->getParsedContent(WikiPage, ParserOptions, bool, null, null, bool)
#38 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiMain.php(1948): ApiParse->execute()
#39 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiMain.php(926): ApiMain->executeAction()
#40 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiMain.php(897): ApiMain->executeActionWithErrorHandling()
#41 /srv/mediawiki/php-1.43.0-wmf.21/includes/api/ApiEntryPoint.php(153): ApiMain->execute()
#42 /srv/mediawiki/php-1.43.0-wmf.21/includes/MediaWikiEntryPoint.php(200): MediaWiki\Api\ApiEntryPoint->execute()
#43 /srv/mediawiki/php-1.43.0-wmf.21/api.php(44): MediaWiki\MediaWikiEntryPoint->run()
#44 /srv/mediawiki/w/api.php(3): require(string)
#45 {main}

