Page MenuHomePhabricator

MediaWiki\Revision\BadRevisionException: The content of this revision is missing or corrupted (bad schema)
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
labels.normalized_message
[{reqId}] {exception_url}   MediaWiki\Revision\BadRevisionException: The content of this revision is missing or corrupted (bad schema)
error.stack_trace
from /srv/mediawiki/php-1.41.0-wmf.12/includes/Revision/RevisionStore.php(1190)
#0 /srv/mediawiki/php-1.41.0-wmf.12/includes/Revision/RevisionStore.php(1506): MediaWiki\Revision\RevisionStore->loadSlotContent(MediaWiki\Revision\SlotRecord, NULL, NULL, NULL, integer)
#1 [internal function]: MediaWiki\Revision\RevisionStore->MediaWiki\Revision\{closure}(MediaWiki\Revision\SlotRecord)
#2 /srv/mediawiki/php-1.41.0-wmf.12/includes/Revision/SlotRecord.php(324): call_user_func(Closure, MediaWiki\Revision\SlotRecord)
#3 /srv/mediawiki/php-1.41.0-wmf.12/includes/Revision/RevisionRecord.php(183): MediaWiki\Revision\SlotRecord->getContent()
#4 /srv/mediawiki/php-1.41.0-wmf.12/includes/parser/Parsoid/Config/PageContent.php(80): MediaWiki\Revision\RevisionRecord->getContentOrThrow(string)
#5 /srv/mediawiki/php-1.41.0-wmf.12/vendor/wikimedia/parsoid/src/Wt2Html/PageConfigFrame.php(27): MediaWiki\Parser\Parsoid\Config\PageContent->getContent(string)
#6 /srv/mediawiki/php-1.41.0-wmf.12/vendor/wikimedia/parsoid/src/Config/Env.php(285): Wikimedia\Parsoid\Wt2Html\PageConfigFrame->__construct(Wikimedia\Parsoid\Config\Env, MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\Parsoid\Config\SiteConfig)
#7 /srv/mediawiki/php-1.41.0-wmf.12/vendor/wikimedia/parsoid/src/Parsoid.php(162): Wikimedia\Parsoid\Config\Env->__construct(MediaWiki\Parser\Parsoid\Config\SiteConfig, MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\Parsoid\Config\DataAccess, ParserOutput, array)
#8 /srv/mediawiki/php-1.41.0-wmf.12/vendor/wikimedia/parsoid/src/Parsoid.php(216): Wikimedia\Parsoid\Parsoid->parseWikitext(MediaWiki\Parser\Parsoid\Config\PageConfig, ParserOutput, array)
#9 /srv/mediawiki/php-1.41.0-wmf.12/includes/parser/Parsoid/ParsoidOutputAccess.php(298): Wikimedia\Parsoid\Parsoid->wikitext2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array, NULL, ParserOutput)
#10 /srv/mediawiki/php-1.41.0-wmf.12/includes/parser/Parsoid/ParsoidOutputAccess.php(465): MediaWiki\Parser\Parsoid\ParsoidOutputAccess->parseInternal(MediaWiki\Parser\Parsoid\Config\PageConfig, array)
#11 /srv/mediawiki/php-1.41.0-wmf.12/includes/parser/Parsoid/ParsoidOutputAccess.php(244): MediaWiki\Parser\Parsoid\ParsoidOutputAccess->parse(MediaWiki\Page\PageStoreRecord, ParserOptions, array, MediaWiki\Revision\RevisionStoreRecord)
#12 /srv/mediawiki/php-1.41.0-wmf.12/includes/jobqueue/jobs/ParsoidCachePrewarmJob.php(127): MediaWiki\Parser\Parsoid\ParsoidOutputAccess->getParserOutput(MediaWiki\Page\PageStoreRecord, ParserOptions, MediaWiki\Revision\RevisionStoreRecord, integer)
#13 /srv/mediawiki/php-1.41.0-wmf.12/includes/jobqueue/jobs/ParsoidCachePrewarmJob.php(140): ParsoidCachePrewarmJob->doParsoidCacheUpdate()
#14 /srv/mediawiki/php-1.41.0-wmf.12/extensions/EventBus/includes/JobExecutor.php(79): ParsoidCachePrewarmJob->run()
#15 /srv/mediawiki/rpc/RunSingleJob.php(77): MediaWiki\Extension\EventBus\JobExecutor->execute(array)
#16 {main}
error.stack.previous_trace
from /srv/mediawiki/php-1.41.0-wmf.12/includes/Storage/SqlBlobStore.php(279)
#0 /srv/mediawiki/php-1.41.0-wmf.12/includes/Revision/RevisionStore.php(1188): MediaWiki\Storage\SqlBlobStore->getBlob(string, integer)
#1 /srv/mediawiki/php-1.41.0-wmf.12/includes/Revision/RevisionStore.php(1506): MediaWiki\Revision\RevisionStore->loadSlotContent(MediaWiki\Revision\SlotRecord, NULL, NULL, NULL, integer)
#2 [internal function]: MediaWiki\Revision\RevisionStore->MediaWiki\Revision\{closure}(MediaWiki\Revision\SlotRecord)
#3 /srv/mediawiki/php-1.41.0-wmf.12/includes/Revision/SlotRecord.php(324): call_user_func(Closure, MediaWiki\Revision\SlotRecord)
#4 /srv/mediawiki/php-1.41.0-wmf.12/includes/Revision/RevisionRecord.php(183): MediaWiki\Revision\SlotRecord->getContent()
#5 /srv/mediawiki/php-1.41.0-wmf.12/includes/parser/Parsoid/Config/PageContent.php(80): MediaWiki\Revision\RevisionRecord->getContentOrThrow(string)
#6 /srv/mediawiki/php-1.41.0-wmf.12/vendor/wikimedia/parsoid/src/Wt2Html/PageConfigFrame.php(27): MediaWiki\Parser\Parsoid\Config\PageContent->getContent(string)
#7 /srv/mediawiki/php-1.41.0-wmf.12/vendor/wikimedia/parsoid/src/Config/Env.php(285): Wikimedia\Parsoid\Wt2Html\PageConfigFrame->__construct(Wikimedia\Parsoid\Config\Env, MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\Parsoid\Config\SiteConfig)
#8 /srv/mediawiki/php-1.41.0-wmf.12/vendor/wikimedia/parsoid/src/Parsoid.php(162): Wikimedia\Parsoid\Config\Env->__construct(MediaWiki\Parser\Parsoid\Config\SiteConfig, MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\Parsoid\Config\DataAccess, ParserOutput, array)
#9 /srv/mediawiki/php-1.41.0-wmf.12/vendor/wikimedia/parsoid/src/Parsoid.php(216): Wikimedia\Parsoid\Parsoid->parseWikitext(MediaWiki\Parser\Parsoid\Config\PageConfig, ParserOutput, array)
#10 /srv/mediawiki/php-1.41.0-wmf.12/includes/parser/Parsoid/ParsoidOutputAccess.php(298): Wikimedia\Parsoid\Parsoid->wikitext2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array, NULL, ParserOutput)
#11 /srv/mediawiki/php-1.41.0-wmf.12/includes/parser/Parsoid/ParsoidOutputAccess.php(465): MediaWiki\Parser\Parsoid\ParsoidOutputAccess->parseInternal(MediaWiki\Parser\Parsoid\Config\PageConfig, array)
#12 /srv/mediawiki/php-1.41.0-wmf.12/includes/parser/Parsoid/ParsoidOutputAccess.php(244): MediaWiki\Parser\Parsoid\ParsoidOutputAccess->parse(MediaWiki\Page\PageStoreRecord, ParserOptions, array, MediaWiki\Revision\RevisionStoreRecord)
#13 /srv/mediawiki/php-1.41.0-wmf.12/includes/jobqueue/jobs/ParsoidCachePrewarmJob.php(127): MediaWiki\Parser\Parsoid\ParsoidOutputAccess->getParserOutput(MediaWiki\Page\PageStoreRecord, ParserOptions, MediaWiki\Revision\RevisionStoreRecord, integer)
#14 /srv/mediawiki/php-1.41.0-wmf.12/includes/jobqueue/jobs/ParsoidCachePrewarmJob.php(140): ParsoidCachePrewarmJob->doParsoidCacheUpdate()
#15 /srv/mediawiki/php-1.41.0-wmf.12/extensions/EventBus/includes/JobExecutor.php(79): ParsoidCachePrewarmJob->run()
#16 /srv/mediawiki/rpc/RunSingleJob.php(77): MediaWiki\Extension\EventBus\JobExecutor->execute(array)
#17 {main}
Notes

Parsoid cache prewarm job started showing this problem shortly after deployment of 1.41.0-wmf.12 to group2 on Thursday last week (June 8th).

It's unclear where the problem originates exactly; neither the parsoid code nor the revision store code had code modifications in the relevant time frame, so I'm tagging the ticket with both components. Could be a data corruption problem, but then it's strange that the problem started happening right after the code deployment.

Details

Request URL
https://jobrunner.discovery.wmnet/rpc/RunSingleJob.php

Event Timeline

The comment // Database row was marked as "known bad" in code indicates that the maintenance script findBadBlobs.php --mark was used. But that would be bad for the current revision of a page.

Change 929777 had a related patch set uploaded (by Arlolra; author: Arlolra):

[mediawiki/core@master] Catch pageConfig errors in ParsoidOutputAccess

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

Arlolra triaged this task as Medium priority.Jun 13 2023, 8:14 PM
Arlolra moved this task from Backlog to Code Review on the Content-Transform-Team-WIP board.
Arlolra moved this task from Needs Triage to Bugs & Crashers on the Parsoid board.

Change 929777 merged by jenkins-bot:

[mediawiki/core@master] Catch RevisionAccessException in ParsoidOutputAccess

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