Page MenuHomePhabricator

Wikimedia\Rdbms\DBTransactionSizeError: Transaction spent {time}s in writes, exceeding the 3s limit
Open, HighPublicPRODUCTION ERROR

Description

Error
labels.normalized_message
[{reqId}] {exception_url}   Wikimedia\Rdbms\DBTransactionSizeError: Transaction spent {time}s in writes, exceeding the 3s limit
error.stack_trace
from /srv/mediawiki/php-1.43.0-wmf.3/includes/libs/rdbms/loadbalancer/LoadBalancer.php(1400)
#0 /srv/mediawiki/php-1.43.0-wmf.3/includes/libs/rdbms/lbfactory/LBFactory.php(325): Wikimedia\Rdbms\LoadBalancer->approvePrimaryChanges(integer, string)
#1 /srv/mediawiki/php-1.43.0-wmf.3/includes/MediaWikiEntryPoint.php(297): Wikimedia\Rdbms\LBFactory->commitPrimaryChanges(string, integer)
#2 /srv/mediawiki/php-1.43.0-wmf.3/includes/MediaWikiEntryPoint.php(188): MediaWiki\MediaWikiEntryPoint->commitMainTransaction()
#3 /srv/mediawiki/php-1.43.0-wmf.3/includes/MediaWikiEntryPoint.php(171): MediaWiki\MediaWikiEntryPoint->doPrepareForOutput()
#4 /srv/mediawiki/php-1.43.0-wmf.3/includes/MediaWiki.php(90): MediaWiki\MediaWikiEntryPoint->prepareForOutput()
#5 /srv/mediawiki/php-1.43.0-wmf.3/includes/api/ApiMain.php(952): MediaWiki::preOutputCommit(MediaWiki\Context\DerivativeContext)
#6 /srv/mediawiki/php-1.43.0-wmf.3/includes/api/ApiMain.php(895): ApiMain->executeActionWithErrorHandling()
#7 /srv/mediawiki/php-1.43.0-wmf.3/includes/api/ApiEntryPoint.php(158): ApiMain->execute()
#8 /srv/mediawiki/php-1.43.0-wmf.3/includes/MediaWikiEntryPoint.php(199): MediaWiki\Api\ApiEntryPoint->execute()
#9 /srv/mediawiki/php-1.43.0-wmf.3/api.php(44): MediaWiki\MediaWikiEntryPoint->run()
#10 /srv/mediawiki/w/api.php(3): require(string)
#11 {main}
Impact
Notes

Details

Request URL
https://commons.wikimedia.org/w/api.php

Event Timeline

Also

Error
normalized_message
[{reqId}] {exception_url}   Wikimedia\Rdbms\DBQueryError: Error 1205: Lock wait timeout exceeded; try restarting transaction
Function: WikiPage::updateCategoryCounts
Query: UPDATE  `category` SET cat_pages = cat_pages + 1,cat_files = cat_files + 1 WHERE c
exception.trace
from /srv/mediawiki/php-1.43.0-wmf.3/includes/libs/rdbms/database/Database.php(1203)
#0 /srv/mediawiki/php-1.43.0-wmf.3/includes/libs/rdbms/database/Database.php(1187): Wikimedia\Rdbms\Database->getQueryException(string, integer, string, string)
#1 /srv/mediawiki/php-1.43.0-wmf.3/includes/libs/rdbms/database/Database.php(1161): Wikimedia\Rdbms\Database->getQueryExceptionAndLog(string, integer, string, string)
#2 /srv/mediawiki/php-1.43.0-wmf.3/includes/libs/rdbms/database/Database.php(652): Wikimedia\Rdbms\Database->reportQueryError(string, integer, string, string, boolean)
#3 /srv/mediawiki/php-1.43.0-wmf.3/includes/libs/rdbms/database/Database.php(1501): Wikimedia\Rdbms\Database->query(Wikimedia\Rdbms\Query, string)
#4 /srv/mediawiki/php-1.43.0-wmf.3/includes/libs/rdbms/database/DBConnRef.php(126): Wikimedia\Rdbms\Database->update(string, array, array, string, array)
#5 /srv/mediawiki/php-1.43.0-wmf.3/includes/libs/rdbms/database/DBConnRef.php(420): Wikimedia\Rdbms\DBConnRef->__call(string, array)
#6 /srv/mediawiki/php-1.43.0-wmf.3/includes/libs/rdbms/querybuilder/UpdateQueryBuilder.php(332): Wikimedia\Rdbms\DBConnRef->update(string, array, array, string, array)
#7 /srv/mediawiki/php-1.43.0-wmf.3/includes/page/WikiPage.php(2969): Wikimedia\Rdbms\UpdateQueryBuilder->execute()
#8 /srv/mediawiki/php-1.43.0-wmf.3/includes/deferred/LinksUpdate/CategoryLinksTable.php(320): WikiPage->updateCategoryCounts(array, array, integer)
#9 /srv/mediawiki/php-1.43.0-wmf.3/includes/deferred/LinksUpdate/CategoryLinksTable.php(287): MediaWiki\Deferred\LinksUpdate\CategoryLinksTable->updateCategoryCounts(array, array)
#10 /srv/mediawiki/php-1.43.0-wmf.3/includes/deferred/LinksUpdate/LinksTable.php(392): MediaWiki\Deferred\LinksUpdate\CategoryLinksTable->finishUpdate()
#11 /srv/mediawiki/php-1.43.0-wmf.3/includes/deferred/LinksUpdate/LinksUpdate.php(225): MediaWiki\Deferred\LinksUpdate\LinksTable->update()
#12 /srv/mediawiki/php-1.43.0-wmf.3/includes/deferred/LinksUpdate/LinksUpdate.php(185): MediaWiki\Deferred\LinksUpdate\LinksUpdate->doIncrementalUpdate()
#13 /srv/mediawiki/php-1.43.0-wmf.3/includes/deferred/DeferredUpdates.php(486): MediaWiki\Deferred\LinksUpdate\LinksUpdate->doUpdate()
#14 /srv/mediawiki/php-1.43.0-wmf.3/includes/deferred/RefreshSecondaryDataUpdate.php(110): MediaWiki\Deferred\DeferredUpdates::attemptUpdate(MediaWiki\Deferred\LinksUpdate\LinksUpdate)
#15 /srv/mediawiki/php-1.43.0-wmf.3/includes/deferred/DeferredUpdates.php(486): RefreshSecondaryDataUpdate->doUpdate()
#16 /srv/mediawiki/php-1.43.0-wmf.3/includes/deferred/DeferredUpdates.php(198): MediaWiki\Deferred\DeferredUpdates::attemptUpdate(RefreshSecondaryDataUpdate)
#17 /srv/mediawiki/php-1.43.0-wmf.3/includes/deferred/DeferredUpdates.php(285): MediaWiki\Deferred\DeferredUpdates::run(RefreshSecondaryDataUpdate)
#18 /srv/mediawiki/php-1.43.0-wmf.3/includes/deferred/DeferredUpdatesScope.php(266): MediaWiki\Deferred\DeferredUpdates::MediaWiki\Deferred\{closure}(RefreshSecondaryDataUpdate, integer)
#19 /srv/mediawiki/php-1.43.0-wmf.3/includes/deferred/DeferredUpdatesScope.php(198): MediaWiki\Deferred\DeferredUpdatesScope->processStageQueue(integer, integer, Closure)
#20 /srv/mediawiki/php-1.43.0-wmf.3/includes/deferred/DeferredUpdates.php(304): MediaWiki\Deferred\DeferredUpdatesScope->processUpdates(integer, Closure)
#21 /srv/mediawiki/php-1.43.0-wmf.3/includes/MediaWikiEntryPoint.php(672): MediaWiki\Deferred\DeferredUpdates::doUpdates()
#22 /srv/mediawiki/php-1.43.0-wmf.3/includes/MediaWikiEntryPoint.php(495): MediaWiki\MediaWikiEntryPoint->restInPeace()
#23 /srv/mediawiki/php-1.43.0-wmf.3/includes/MediaWikiEntryPoint.php(453): MediaWiki\MediaWikiEntryPoint->doPostOutputShutdown()
#24 /srv/mediawiki/php-1.43.0-wmf.3/includes/MediaWikiEntryPoint.php(208): MediaWiki\MediaWikiEntryPoint->postOutputShutdown()
#25 /srv/mediawiki/php-1.43.0-wmf.3/api.php(44): MediaWiki\MediaWikiEntryPoint->run()
#26 /srv/mediawiki/w/api.php(3): require(string)
#27 {main}
Zabe triaged this task as Unbreak Now! priority.May 7 2024, 4:31 PM

There were like 10000 errors of these kinds within the last hour.

This is spiking latency, 5xx and worker saturation in eqiad api servers

Looks like it started on Sunday when there were no deploys:

2024-05-07-3s-limit.png (635×927 px, 46 KB)

Last refactor was in T300303: Deadlock in WikiPage::updateCategoryCounts query

It seems that one category is added to many pages/files. This could be a new gadget or tool.
It is possible to group the Api-UserAgent to see if that is related? Maybe the api requests should not done in parallel, if that is related.

thcipriani lowered the priority of this task from Unbreak Now! to High.May 16 2024, 3:28 PM

Lowering priority since it seems like this error is no longer happening at the same level—were there any changes related to this task that would have cause that? Or is this driven by traffic?