Page MenuHomePhabricator

Fatal exception of type "MediaWiki\Revision\SuppressedDataException" when trying to view a deleted revision with Parsoid
Closed, ResolvedPublicPRODUCTION ERROR

Description

Steps to replicate the issue (include links if applicable):

What happens?:
Internal error: [92cae700-cefa-40ad-a2e7-124b0bff9b6a] 2024-08-09 05:39:43: Fatal exception of type "MediaWiki\Revision\SuppressedDataException"

What should have happened instead?:
Version of page should display to the user with the appropriate user right.

Software version (on Special:Version page; skip for WMF-hosted wikis like Wikipedia):

Other information (browser name/version, screenshots, etc.):

Bumped into the bad link from this link https://en.wikipedia.org/w/index.php?title=Wikipedia:Bureaucrats%27_noticeboard&oldid=1239420809 from the text "As an administrator, you can still view this revision if you wish to proceed."

Errors

Not an available content version.

Error
  • mwversion: 1.46.0-wmf.15
  • timestamp: 2026-02-13T12:44:10.426Z
  • phpversion: 8.3.30
  • reqId: 4d1aab01-cf71-40a5-b00a-ed94c79e3eb9
  • Find reqId in Logstash
normalized_message
[{reqId}] {exception_url}   MediaWiki\Revision\SuppressedDataException: Not an available content version.
FrameLocationCall
from/srv/mediawiki/php-1.46.0-wmf.15/includes/Parser/Parsoid/Config/PageConfigFactory.php(175)
#0/srv/mediawiki/php-1.46.0-wmf.15/includes/Parser/Parsoid/ParsoidParser.php(254)MediaWiki\Parser\Parsoid\Config\PageConfigFactory->createFromParserOptions(MediaWiki\Parser\ParserOptions, MediaWiki\Title\Title, int, null)
#1/srv/mediawiki/php-1.46.0-wmf.15/includes/Content/WikitextContentHandler.php(375)MediaWiki\Parser\Parsoid\ParsoidParser->parse(MediaWiki\Content\WikitextContent, MediaWiki\Title\Title, MediaWiki\Parser\ParserOptions, bool, bool, int, MediaWiki\Parser\ParserOutput)
#2/srv/mediawiki/php-1.46.0-wmf.15/includes/Content/ContentHandler.php(1574)MediaWiki\Content\WikitextContentHandler->fillParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams, MediaWiki\Parser\ParserOutput)
#3/srv/mediawiki/php-1.46.0-wmf.15/includes/Content/Renderer/ContentRenderer.php(67)MediaWiki\Content\ContentHandler->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams)
#4/srv/mediawiki/php-1.46.0-wmf.15/includes/Revision/RenderedRevision.php(246)MediaWiki\Content\Renderer\ContentRenderer->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Page\PageIdentityValue, MediaWiki\Revision\RevisionStoreRecord, MediaWiki\Parser\ParserOptions, array)
#5/srv/mediawiki/php-1.46.0-wmf.15/includes/Revision/RenderedRevision.php(219)MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(MediaWiki\Content\WikitextContent, array)
#6/srv/mediawiki/php-1.46.0-wmf.15/includes/Revision/RevisionRenderer.php(225)MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#7/srv/mediawiki/php-1.46.0-wmf.15/includes/Revision/RevisionRenderer.php(158)MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, MediaWiki\Parser\ParserOptions, array)
#8/srv/mediawiki/php-1.46.0-wmf.15/includes/Revision/RenderedRevision.php(182)MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#9/srv/mediawiki/php-1.46.0-wmf.15/includes/Page/ParserOutputAccess.php(590)MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#10/srv/mediawiki/php-1.46.0-wmf.15/includes/Page/ParserOutputAccess.php(505)MediaWiki\Page\ParserOutputAccess->renderRevision(MediaWiki\Page\WikiPage, MediaWiki\Parser\ParserOptions, MediaWiki\Revision\RevisionStoreRecord, array, MediaWiki\Parser\ParserOutput)
#11/srv/mediawiki/php-1.46.0-wmf.15/includes/Page/ParserOutputAccess.php(579)MediaWiki\Page\ParserOutputAccess->getParserOutput(MediaWiki\Page\WikiPage, MediaWiki\Parser\ParserOptions, MediaWiki\Revision\RevisionStoreRecord, array)
#12/srv/mediawiki/php-1.46.0-wmf.15/includes/Page/ParserOutputAccess.php(681)MediaWiki\Page\ParserOutputAccess->renderRevision(MediaWiki\Page\WikiPage, MediaWiki\Parser\ParserOptions, MediaWiki\Revision\RevisionStoreRecord, array)
#13/srv/mediawiki/php-1.46.0-wmf.15/includes/PoolCounter/PoolCounterWorkViaCallback.php(68)MediaWiki\Page\ParserOutputAccess->MediaWiki\Page\{closure}()
#14/srv/mediawiki/php-1.46.0-wmf.15/includes/PoolCounter/PoolCounterWork.php(159)MediaWiki\PoolCounter\PoolCounterWorkViaCallback->doWork()
#15/srv/mediawiki/php-1.46.0-wmf.15/includes/Page/ParserOutputAccess.php(495)MediaWiki\PoolCounter\PoolCounterWork->execute()
#16/srv/mediawiki/php-1.46.0-wmf.15/includes/Page/Article.php(883)MediaWiki\Page\ParserOutputAccess->getParserOutput(MediaWiki\Page\WikiPage, MediaWiki\Parser\ParserOptions, MediaWiki\Revision\RevisionStoreRecord, array)
#17/srv/mediawiki/php-1.46.0-wmf.15/includes/Page/Article.php(544)MediaWiki\Page\Article->generateContentOutput(MediaWiki\User\User, MediaWiki\Parser\ParserOptions, int, MediaWiki\Output\OutputPage, array)
#18/srv/mediawiki/php-1.46.0-wmf.15/includes/Actions/ViewAction.php(71)MediaWiki\Page\Article->view()
#19/srv/mediawiki/php-1.46.0-wmf.15/includes/Actions/ActionEntryPoint.php(739)MediaWiki\Actions\ViewAction->show()
#20/srv/mediawiki/php-1.46.0-wmf.15/includes/Actions/ActionEntryPoint.php(510)MediaWiki\Actions\ActionEntryPoint->performAction(MediaWiki\Page\Article, MediaWiki\Title\Title)
#21/srv/mediawiki/php-1.46.0-wmf.15/includes/Actions/ActionEntryPoint.php(144)MediaWiki\Actions\ActionEntryPoint->performRequest()
#22/srv/mediawiki/php-1.46.0-wmf.15/includes/MediaWikiEntryPoint.php(180)MediaWiki\Actions\ActionEntryPoint->execute()
#23/srv/mediawiki/php-1.46.0-wmf.15/index.php(44)MediaWiki\MediaWikiEntryPoint->run()
#24/srv/mediawiki/w/index.php(3)require(string)
#25{main}

Details

Request URL
https://en.wikipedia.org/w/index.php?title=Wikipedia:Bureaucrats%27_noticeboard&oldid=1239420809&unhide=1
Related Changes in Gerrit:

Event Timeline

Jdforrester-WMF changed the subtype of this task from "Bug Report" to "Production Error".Aug 9 2024, 7:18 AM
Jdforrester-WMF set Request URL to https://en.wikipedia.org/w/index.php?title=Wikipedia:Bureaucrats%27_noticeboard&oldid=1239420809&unhide=1.Aug 9 2024, 7:24 AM
Jdforrester-WMF updated the task description. (Show Details)
Jdforrester-WMF added a project: Parsoid.
Jdforrester-WMF subscribed.

I believe this is an issue caused by having the Parsoid page renderer switched on (and a bug there!); if you switch it off, you should avoid the error?

Yes I do, and &useparsoid=0 does successfully render the page, yes.

"Note that Parsoid isn't supposed to use the user context by design; all user-specific processing is expected to be introduced as a post-parse transform." (code comment)

Well that's nice in theory, but in the real world use of the $audience and $performer a fair bit for access control, and Parsoid can't just give up. :-)

Jdforrester-WMF renamed this task from Fatal exception of type "MediaWiki\Revision\SuppressedDataException" to Fatal exception of type "MediaWiki\Revision\SuppressedDataException" when trying to view a deleted revision with Parsoid.Aug 9 2024, 7:36 AM
MSantos triaged this task as Medium priority.Nov 21 2024, 3:15 PM
Error
normalized_message
[{reqId}] {exception_url}   MediaWiki\Revision\SuppressedDataException: Not an available content version.
FrameLocationCall
from/srv/mediawiki/php-1.44.0-wmf.18/includes/parser/Parsoid/Config/PageConfigFactory.php(158)
#0/srv/mediawiki/php-1.44.0-wmf.18/includes/parser/Parsoid/ParsoidParser.php(259)MediaWiki\Parser\Parsoid\Config\PageConfigFactory->create(MediaWiki\Title\Title, MediaWiki\User\User, int, null, null)
#1/srv/mediawiki/php-1.44.0-wmf.18/includes/content/WikitextContentHandler.php(384)MediaWiki\Parser\Parsoid\ParsoidParser->parse(MediaWiki\Content\WikitextContent, MediaWiki\Title\Title, MediaWiki\Parser\ParserOptions, bool, bool, int, null)
#2/srv/mediawiki/php-1.44.0-wmf.18/includes/content/ContentHandler.php(1697)MediaWiki\Content\WikitextContentHandler->fillParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams, MediaWiki\Parser\ParserOutput)
#3/srv/mediawiki/php-1.44.0-wmf.18/includes/content/Renderer/ContentRenderer.php(75)MediaWiki\Content\ContentHandler->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams)
#4/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RenderedRevision.php(261)MediaWiki\Content\Renderer\ContentRenderer->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Page\PageIdentityValue, MediaWiki\Revision\RevisionStoreRecord, MediaWiki\Parser\ParserOptions, array)
#5/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RenderedRevision.php(233)MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(MediaWiki\Content\WikitextContent, array)
#6/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RevisionRenderer.php(236)MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#7/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RevisionRenderer.php(169)MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, MediaWiki\Parser\ParserOptions, array)
#8/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RenderedRevision.php(196)MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#9/srv/mediawiki/php-1.44.0-wmf.18/includes/poolcounter/PoolWorkArticleView.php(106)MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#10/srv/mediawiki/php-1.44.0-wmf.18/includes/poolcounter/PoolWorkArticleView.php(77)MediaWiki\PoolCounter\PoolWorkArticleView->renderRevision()
#11/srv/mediawiki/php-1.44.0-wmf.18/includes/poolcounter/PoolCounterWork.php(171)MediaWiki\PoolCounter\PoolWorkArticleView->doWork()
#12/srv/mediawiki/php-1.44.0-wmf.18/includes/page/ParserOutputAccess.php(369)MediaWiki\PoolCounter\PoolCounterWork->execute()
#13/srv/mediawiki/php-1.44.0-wmf.18/includes/page/Article.php(830)MediaWiki\Page\ParserOutputAccess->getParserOutput(WikiPage, MediaWiki\Parser\ParserOptions, MediaWiki\Revision\RevisionStoreRecord, int)
#14/srv/mediawiki/php-1.44.0-wmf.18/includes/page/Article.php(546)Article->generateContentOutput(MediaWiki\User\User, MediaWiki\Parser\ParserOptions, int, MediaWiki\Output\OutputPage, array)
#15/srv/mediawiki/php-1.44.0-wmf.18/includes/actions/ViewAction.php(78)Article->view()
#16/srv/mediawiki/php-1.44.0-wmf.18/includes/actions/ActionEntryPoint.php(732)ViewAction->show()
#17/srv/mediawiki/php-1.44.0-wmf.18/includes/actions/ActionEntryPoint.php(509)MediaWiki\Actions\ActionEntryPoint->performAction(Article, MediaWiki\Title\Title)
#18/srv/mediawiki/php-1.44.0-wmf.18/includes/actions/ActionEntryPoint.php(145)MediaWiki\Actions\ActionEntryPoint->performRequest()
#19/srv/mediawiki/php-1.44.0-wmf.18/includes/MediaWikiEntryPoint.php(202)MediaWiki\Actions\ActionEntryPoint->execute()
#20/srv/mediawiki/php-1.44.0-wmf.18/index.php(58)MediaWiki\MediaWikiEntryPoint->run()
#21/srv/mediawiki/w/index.php(3)require(string)
#22{main}
Impact
Notes
Error
normalized_message
[{reqId}] {exception_url}   MediaWiki\Revision\SuppressedDataException: Not an available content version.
FrameLocationCall
from/srv/mediawiki/php-1.44.0-wmf.18/includes/parser/Parsoid/Config/PageConfigFactory.php(158)
#0/srv/mediawiki/php-1.44.0-wmf.18/includes/parser/Parsoid/ParsoidParser.php(259)MediaWiki\Parser\Parsoid\Config\PageConfigFactory->create(MediaWiki\Title\Title, MediaWiki\User\User, int, null, null)
#1/srv/mediawiki/php-1.44.0-wmf.18/includes/content/WikitextContentHandler.php(384)MediaWiki\Parser\Parsoid\ParsoidParser->parse(MediaWiki\Content\WikitextContent, MediaWiki\Title\Title, MediaWiki\Parser\ParserOptions, bool, bool, int, null)
#2/srv/mediawiki/php-1.44.0-wmf.18/includes/content/ContentHandler.php(1697)MediaWiki\Content\WikitextContentHandler->fillParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams, MediaWiki\Parser\ParserOutput)
#3/srv/mediawiki/php-1.44.0-wmf.18/includes/content/Renderer/ContentRenderer.php(75)MediaWiki\Content\ContentHandler->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams)
#4/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RenderedRevision.php(261)MediaWiki\Content\Renderer\ContentRenderer->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Page\PageIdentityValue, MediaWiki\Revision\RevisionStoreRecord, MediaWiki\Parser\ParserOptions, array)
#5/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RenderedRevision.php(233)MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(MediaWiki\Content\WikitextContent, array)
#6/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RevisionRenderer.php(236)MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#7/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RevisionRenderer.php(169)MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, MediaWiki\Parser\ParserOptions, array)
#8/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RenderedRevision.php(196)MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#9/srv/mediawiki/php-1.44.0-wmf.18/includes/poolcounter/PoolWorkArticleView.php(106)MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#10/srv/mediawiki/php-1.44.0-wmf.18/includes/poolcounter/PoolWorkArticleView.php(77)MediaWiki\PoolCounter\PoolWorkArticleView->renderRevision()
#11/srv/mediawiki/php-1.44.0-wmf.18/includes/poolcounter/PoolCounterWork.php(171)MediaWiki\PoolCounter\PoolWorkArticleView->doWork()
#12/srv/mediawiki/php-1.44.0-wmf.18/includes/page/ParserOutputAccess.php(369)MediaWiki\PoolCounter\PoolCounterWork->execute()
#13/srv/mediawiki/php-1.44.0-wmf.18/includes/page/Article.php(830)MediaWiki\Page\ParserOutputAccess->getParserOutput(WikiPage, MediaWiki\Parser\ParserOptions, MediaWiki\Revision\RevisionStoreRecord, int)
#14/srv/mediawiki/php-1.44.0-wmf.18/includes/page/Article.php(546)Article->generateContentOutput(MediaWiki\User\User, MediaWiki\Parser\ParserOptions, int, MediaWiki\Output\OutputPage, array)
#15/srv/mediawiki/php-1.44.0-wmf.18/includes/actions/ViewAction.php(78)Article->view()
#16/srv/mediawiki/php-1.44.0-wmf.18/includes/actions/ActionEntryPoint.php(732)ViewAction->show()
#17/srv/mediawiki/php-1.44.0-wmf.18/includes/actions/ActionEntryPoint.php(509)MediaWiki\Actions\ActionEntryPoint->performAction(Article, MediaWiki\Title\Title)
#18/srv/mediawiki/php-1.44.0-wmf.18/includes/actions/ActionEntryPoint.php(145)MediaWiki\Actions\ActionEntryPoint->performRequest()
#19/srv/mediawiki/php-1.44.0-wmf.18/includes/MediaWikiEntryPoint.php(202)MediaWiki\Actions\ActionEntryPoint->execute()
#20/srv/mediawiki/php-1.44.0-wmf.18/index.php(58)MediaWiki\MediaWikiEntryPoint->run()
#21/srv/mediawiki/w/index.php(3)require(string)
#22{main}
Impact
Notes
cscott raised the priority of this task from Medium to High.Jan 20 2026, 4:11 PM

Well that's nice in theory, but in the real world use of the $audience and $performer a fair bit for access control, and Parsoid can't just give up. :-)

Arguably, the problem here is that Parsiod is actively enorcing the access control. This is from Parsoid's PageonfigFactory:

		// If we have a revision record, check that we are allowed to see it.
		// Mirrors the check from RevisionRecord::getContent
		if (
			$revisionRecord !== null &&
			!$revisionRecord->audienceCan(
				RevisionRecord::DELETED_TEXT, RevisionRecord::FOR_PUBLIC
			)
		) {
			throw new SuppressedDataException( 'Not an available content version.' );
		}

I guess Parsoid needs a "your eyes only" mode. It doesn't have to perform any user specific rendering, just perform a user-specific access check.

@MSantos do you have an ETA for when this would be fixed? While there's a workaround (&useparsoid=0), it's not a great situation for users who regularly need to review suppressed content.

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

[mediawiki/core@master] [WIP] [parsoid] User specific access checks

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

@MSantos do you have an ETA for when this would be fixed? While there's a workaround (&useparsoid=0), it's not a great situation for users who regularly need to review suppressed content.

We're actively working on it. There's a patch in code review; it will probably be on next week's train.

Change #1248138 merged by jenkins-bot:

[mediawiki/core@master] [parsoid] Remove authority check and get the raw revision record

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

@Izno The fix is now deploy, could you confirm it's working for you? Or any other administrator on the thread

That revision works now.

@MSantos do you have an ETA for when this would be fixed? While there's a workaround (&useparsoid=0), it's not a great situation for users who regularly need to review suppressed content.

We're actively working on it. There's a patch in code review; it will probably be on next week's train.

@cscott @ABreault-WMF Thank you for your work on this!