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
Related Changes in Gerrit:

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)

I did manage to reproduce a reasonable path that does lead to this issue: if you open a MessageBundle, and edit the JSON, create invalid JSON (either bad syntax or not passing the validation), and click on Preview, it will trigger this issue (and crash violently). So I agree with @Pppery above - adding an error message as is done in the other patch looks like a reasonable approach.

Change #1310093 had a related patch set uploaded (by Isabelle Hurbain-Palatin; author: Isabelle Hurbain-Palatin):

[mediawiki/extensions/Translate@master] MessageBundleContentHandler: always return HTML when requested

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

Change #1310093 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] MessageBundleContentHandler: always return HTML when requested

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

Change #1312482 had a related patch set uploaded (by Isabelle Hurbain-Palatin; author: Isabelle Hurbain-Palatin):

[mediawiki/extensions/Translate@master] MessageBundleContentHandler: better handling of user language

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

Change #1312482 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] MessageBundleContentHandler: better handling of user language

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