Page MenuHomePhabricator

"Postcondition failed: Revision had no page" / "PageRecord for page {page} revision {revision} not found" (in DiscussionTools)
Open, Needs TriagePublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   Wikimedia\Assert\PostconditionException: Postcondition failed: Revision had no page
exception.trace
from /srv/mediawiki/php-1.40.0-wmf.8/vendor/wikimedia/assert/src/Assert.php(203)
#0 /srv/mediawiki/php-1.40.0-wmf.8/extensions/DiscussionTools/includes/Hooks/HookUtils.php(135): Wikimedia\Assert\Assert::postcondition(boolean, string)
#1 /srv/mediawiki/php-1.40.0-wmf.8/extensions/DiscussionTools/includes/Hooks/DataUpdatesHooks.php(50): MediaWiki\Extension\DiscussionTools\Hooks\HookUtils::parseRevisionParsoidHtml(MediaWiki\Revision\RevisionStoreRecord)
#2 /srv/mediawiki/php-1.40.0-wmf.8/includes/deferred/MWCallableUpdate.php(38): MediaWiki\Extension\DiscussionTools\Hooks\DataUpdatesHooks->MediaWiki\Extension\DiscussionTools\Hooks\{closure}()
#3 /srv/mediawiki/php-1.40.0-wmf.8/includes/deferred/DeferredUpdates.php(474): MWCallableUpdate->doUpdate()
#4 /srv/mediawiki/php-1.40.0-wmf.8/includes/deferred/RefreshSecondaryDataUpdate.php(103): DeferredUpdates::attemptUpdate(MWCallableUpdate, Wikimedia\Rdbms\LBFactoryMulti)
#5 /srv/mediawiki/php-1.40.0-wmf.8/includes/deferred/DeferredUpdates.php(474): RefreshSecondaryDataUpdate->doUpdate()
#6 /srv/mediawiki/php-1.40.0-wmf.8/includes/Storage/DerivedPageDataUpdater.php(1801): DeferredUpdates::attemptUpdate(RefreshSecondaryDataUpdate, Wikimedia\Rdbms\LBFactoryMulti)
#7 /srv/mediawiki/php-1.40.0-wmf.8/includes/page/WikiPage.php(2136): MediaWiki\Storage\DerivedPageDataUpdater->doSecondaryDataUpdates(array)
#8 /srv/mediawiki/php-1.40.0-wmf.8/includes/jobqueue/jobs/RefreshLinksJob.php(243): WikiPage->doSecondaryDataUpdates(array)
#9 /srv/mediawiki/php-1.40.0-wmf.8/includes/jobqueue/jobs/RefreshLinksJob.php(152): RefreshLinksJob->runForTitle(Title)
#10 /srv/mediawiki/php-1.40.0-wmf.8/extensions/EventBus/includes/JobExecutor.php(79): RefreshLinksJob->run()
#11 /srv/mediawiki/rpc/RunSingleJob.php(77): MediaWiki\Extension\EventBus\JobExecutor->execute(array)
#12 {main}
Impact
Notes

Noticed one of these in recent logs.

Details

Request URL
https://jobrunner.discovery.wmnet/rpc/RunSingleJob.php
Related Changes in Gerrit:

Event Timeline

Krinkle renamed this task from Wikimedia\Assert\PostconditionException: Postcondition failed: Revision had no page to PostconditionException: "Postcondition failed: Revision had no page" (in DiscussionTools).Nov 17 2022, 4:55 PM
Krinkle moved this task from Untriaged to Nov 2022 on the Wikimedia-production-error board.
Krinkle added a project: Editing-team.

Looks very rare, 5 occurrences in last 30 days: https://logstash.wikimedia.org/goto/e31cf3adaed983402761ca72828239e3

We've had this problem previously, where it was caused by some core code reading from replica instead of master: T289717. The rate of errors was much higher when that happened, though.

Or maybe someone has actually deleted the page while our code was trying to process it, the rate is low enough that it could be just that.

Just noted a handful of these in 1.44.0-wmf.12 (T382363):

Error
labels.normalized_message
[{reqId}] {exception_url}   Wikimedia\Assert\PostconditionException: Postcondition failed: Revision had no page
FrameLocationCall
from/srv/mediawiki/php-1.44.0-wmf.12/vendor/wikimedia/assert/src/Assert.php(203)
#0/srv/mediawiki/php-1.44.0-wmf.12/extensions/DiscussionTools/includes/Hooks/HookUtils.php(135)Wikimedia\Assert\Assert::postcondition(bool, string)
#1/srv/mediawiki/php-1.44.0-wmf.12/extensions/DiscussionTools/includes/Hooks/DataUpdatesHooks.php(48)MediaWiki\Extension\DiscussionTools\Hooks\HookUtils::parseRevisionParsoidHtml(MediaWiki\Revision\RevisionStoreRecord, string)
#2/srv/mediawiki/php-1.44.0-wmf.12/includes/deferred/MWCallableUpdate.php(52)MediaWiki\Extension\DiscussionTools\Hooks\DataUpdatesHooks->MediaWiki\Extension\DiscussionTools\Hooks\{closure}(string)
#3/srv/mediawiki/php-1.44.0-wmf.12/includes/deferred/DeferredUpdates.php(462)MediaWiki\Deferred\MWCallableUpdate->doUpdate()
#4/srv/mediawiki/php-1.44.0-wmf.12/includes/deferred/RefreshSecondaryDataUpdate.php(112)MediaWiki\Deferred\DeferredUpdates::attemptUpdate(MediaWiki\Deferred\MWCallableUpdate)
#5/srv/mediawiki/php-1.44.0-wmf.12/includes/deferred/DeferredUpdates.php(462)MediaWiki\Deferred\RefreshSecondaryDataUpdate->doUpdate()
#6/srv/mediawiki/php-1.44.0-wmf.12/includes/deferred/DeferredUpdates.php(204)MediaWiki\Deferred\DeferredUpdates::attemptUpdate(MediaWiki\Deferred\RefreshSecondaryDataUpdate)
#7/srv/mediawiki/php-1.44.0-wmf.12/includes/deferred/DeferredUpdates.php(291)MediaWiki\Deferred\DeferredUpdates::run(MediaWiki\Deferred\RefreshSecondaryDataUpdate)
#8/srv/mediawiki/php-1.44.0-wmf.12/includes/deferred/DeferredUpdatesScope.php(240)MediaWiki\Deferred\DeferredUpdates::MediaWiki\Deferred\{closure}(MediaWiki\Deferred\RefreshSecondaryDataUpdate, int)
#9/srv/mediawiki/php-1.44.0-wmf.12/includes/deferred/DeferredUpdatesScope.php(172)MediaWiki\Deferred\DeferredUpdatesScope->processStageQueue(int, int, Closure)
#10/srv/mediawiki/php-1.44.0-wmf.12/includes/deferred/DeferredUpdates.php(310)MediaWiki\Deferred\DeferredUpdatesScope->processUpdates(int, Closure)
#11/srv/mediawiki/php-1.44.0-wmf.12/includes/MediaWikiEntryPoint.php(676)MediaWiki\Deferred\DeferredUpdates::doUpdates()
#12/srv/mediawiki/php-1.44.0-wmf.12/includes/MediaWikiEntryPoint.php(498)MediaWiki\MediaWikiEntryPoint->restInPeace()
#13/srv/mediawiki/php-1.44.0-wmf.12/includes/MediaWikiEntryPoint.php(456)MediaWiki\MediaWikiEntryPoint->doPostOutputShutdown()
#14/srv/mediawiki/php-1.44.0-wmf.12/includes/MediaWikiEntryPoint.php(211)MediaWiki\MediaWikiEntryPoint->postOutputShutdown()
#15/srv/mediawiki/php-1.44.0-wmf.12/index.php(58)MediaWiki\MediaWikiEntryPoint->run()
#16/srv/mediawiki/w/index.php(3)require(string)
#17{main}
Error
normalized_message
[{reqId}] {exception_url}   Wikimedia\Assert\PostconditionException: Postcondition failed: Revision had no page
FrameLocationCall
from/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/assert/src/Assert.php(203)
#0/srv/mediawiki/php-1.44.0-wmf.18/extensions/DiscussionTools/includes/Hooks/HookUtils.php(136)Wikimedia\Assert\Assert::postcondition(bool, string)
#1/srv/mediawiki/php-1.44.0-wmf.18/extensions/DiscussionTools/includes/Hooks/DataUpdatesHooks.php(48)MediaWiki\Extension\DiscussionTools\Hooks\HookUtils::parseRevisionParsoidHtml(MediaWiki\Revision\RevisionStoreRecord, string)
#2/srv/mediawiki/php-1.44.0-wmf.18/includes/deferred/MWCallableUpdate.php(52)MediaWiki\Extension\DiscussionTools\Hooks\DataUpdatesHooks->MediaWiki\Extension\DiscussionTools\Hooks\{closure}(string)
#3/srv/mediawiki/php-1.44.0-wmf.18/includes/deferred/DeferredUpdates.php(459)MediaWiki\Deferred\MWCallableUpdate->doUpdate()
#4/srv/mediawiki/php-1.44.0-wmf.18/includes/deferred/RefreshSecondaryDataUpdate.php(112)MediaWiki\Deferred\DeferredUpdates::attemptUpdate(MediaWiki\Deferred\MWCallableUpdate)
#5/srv/mediawiki/php-1.44.0-wmf.18/includes/deferred/DeferredUpdates.php(459)MediaWiki\Deferred\RefreshSecondaryDataUpdate->doUpdate()
#6/srv/mediawiki/php-1.44.0-wmf.18/includes/Storage/DerivedPageDataUpdater.php(1856)MediaWiki\Deferred\DeferredUpdates::attemptUpdate(MediaWiki\Deferred\RefreshSecondaryDataUpdate)
#7/srv/mediawiki/php-1.44.0-wmf.18/includes/page/WikiPage.php(1878)MediaWiki\Storage\DerivedPageDataUpdater->doSecondaryDataUpdates(array)
#8/srv/mediawiki/php-1.44.0-wmf.18/includes/jobqueue/jobs/RefreshLinksJob.php(298)WikiPage->doSecondaryDataUpdates(array)
#9/srv/mediawiki/php-1.44.0-wmf.18/includes/jobqueue/jobs/RefreshLinksJob.php(208)RefreshLinksJob->runForTitle(MediaWiki\Title\Title)
#10/srv/mediawiki/php-1.44.0-wmf.18/extensions/EventBus/includes/JobExecutor.php(80)RefreshLinksJob->run()
#11/srv/mediawiki/rpc/RunSingleJob.php(60)MediaWiki\Extension\EventBus\JobExecutor->execute(array)
#12{main}
Impact
Notes

Change #1131942 had a related patch set uploaded (by Bartosz Dziewoński; author: Bartosz Dziewoński):

[mediawiki/extensions/DiscussionTools@master] Add more details to "Revision had no page" error

https://gerrit.wikimedia.org/r/1131942

Change #1131942 merged by jenkins-bot:

[mediawiki/extensions/DiscussionTools@master] Add more details to "Revision had no page" error

https://gerrit.wikimedia.org/r/1131942

Once the above patch goes live, these errors will be logged as "PageRecord for page {page} revision {revision} not found", and will include the affected page/revision IDs so that we can find out what is happening with them.

matmarex renamed this task from PostconditionException: "Postcondition failed: Revision had no page" (in DiscussionTools) to "Postcondition failed: Revision had no page" / "PageRecord for page {page} revision {revision} not found" (in DiscussionTools).Apr 7 2025, 11:53 PM