Page MenuHomePhabricator

LogicException: HTML generation was requested, but MediaWiki\Extension\Translate\MessageBundleTranslation\MessageBundleContent that passed to ContentRenderer::getParserOutput() returns a ParserOutput with no text set.
Open, Needs TriagePublicPRODUCTION ERROR

Description

Error
labels.normalized_message
[{reqId}] {exception_url}   LogicException: HTML generation was requested, but MediaWiki\Extension\Translate\MessageBundleTranslation\MessageBundleContent that passed to ContentRenderer::getParserOutput() returns a ParserOutput with no text set.
FrameLocationCall
from/srv/mediawiki/php-1.45.0-wmf.2/includes/Revision/RenderedRevision.php(236)
#0/srv/mediawiki/php-1.45.0-wmf.2/includes/Revision/RevisionRenderer.php(236)MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#1/srv/mediawiki/php-1.45.0-wmf.2/includes/Revision/RevisionRenderer.php(169)MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, MediaWiki\Parser\ParserOptions, array)
#2/srv/mediawiki/php-1.45.0-wmf.2/includes/Revision/RenderedRevision.php(196)MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#3/srv/mediawiki/php-1.45.0-wmf.2/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(998)MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#4/srv/mediawiki/php-1.45.0-wmf.2/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(950)MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->parseUncacheable(MediaWiki\Page\PageStoreRecord, MediaWiki\Revision\MutableRevisionRecord, bool)
#5/srv/mediawiki/php-1.45.0-wmf.2/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(669)MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getParserOutputInternal()
#6/srv/mediawiki/php-1.45.0-wmf.2/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(763)MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getParserOutput()
#7/srv/mediawiki/php-1.45.0-wmf.2/includes/Rest/Handler/ParsoidHandler.php(740)MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getPageBundle()
#8/srv/mediawiki/php-1.45.0-wmf.2/includes/Rest/Handler/TransformHandler.php(182)MediaWiki\Rest\Handler\ParsoidHandler->wt2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array, string)
#9/srv/mediawiki/php-1.45.0-wmf.2/includes/Rest/Module/Module.php(418)MediaWiki\Rest\Handler\TransformHandler->execute()
#10/srv/mediawiki/php-1.45.0-wmf.2/includes/Rest/Module/Module.php(301)MediaWiki\Rest\Module\Module->executeHandler(MWParsoid\Rest\Handler\TransformHandler)
#11/srv/mediawiki/php-1.45.0-wmf.2/includes/Rest/Router.php(485)MediaWiki\Rest\Module\Module->execute(string, MediaWiki\Rest\RequestFromGlobals)
#12/srv/mediawiki/php-1.45.0-wmf.2/includes/Rest/Router.php(444)MediaWiki\Rest\Router->doExecute(string, MediaWiki\Rest\RequestFromGlobals)
#13/srv/mediawiki/php-1.45.0-wmf.2/includes/Rest/EntryPoint.php(209)MediaWiki\Rest\Router->execute(MediaWiki\Rest\RequestFromGlobals)
#14/srv/mediawiki/php-1.45.0-wmf.2/includes/MediaWikiEntryPoint.php(198)MediaWiki\Rest\EntryPoint->execute()
#15/srv/mediawiki/php-1.45.0-wmf.2/rest.php(39)MediaWiki\MediaWikiEntryPoint->run()
#16/srv/mediawiki/w/rest.php(3)require(string)
#17{main}
Impact
Notes

Details

MediaWiki Version
1.45.0-wmf.2
Request URL
https://meta.wikimedia.orghttp//meta.wikimedia.org/w/rest.php/meta.wikimedia.org/v3/transform/wikitext/to/pagebundle/WikiLearn%2FCourses%2Fcourse-v1%3AWikimedia-Foundation%2BWMF_OL101%2B2023%2Fen%2Fblock-v1%3AWikimedia-Foundation%2BWMF_OL101%2B2023%2Btype%40vertical%2Bblock%40cd71e85fa50f464c82f3649bfe156f78

Event Timeline

Aklapper updated the task description. (Show Details)
Aklapper added a project: MediaWiki-General.

Looks very much similar to T386064: MediaWiki\Extension\Translate\MessageBundleTranslation\MalformedBundle: translate-messagebundle-error-parsing (due to broken URI). I would really much like to know what is going on there so that we don't keep adding bandage to wrong place.

[...]
So, if isValid() returns false, the ParserOutput object will not contain text.

I beleive this is a violation of the contract of fillParserOutput: if HTML generation is request, the resulting ParserOutput must contain HTML (aka "text").

I'm not sure what the correct rendering of broken JSON should be - perhaps just an error message, or an error message plus a "raw" representation of the JSON.

As far as I can tell, this isn't a new issue. It has probably always been like this.

The current Translate code has

		if ( !$content->isValid() ) {
			$parserOutput->setRawText( null );
			return;
		}

This has an almost identical problem to the code Daniel was referring to, and the fix is presumably the same as it was in that patch.

(I don't plan to actually work on fixing this because I don't care enough, though)