Page MenuHomePhabricator

PHP Warning: MediaWiki\Parser\ParserOutput::collectMetadata: bad type for 'translate-is-translation', set '1' (T373920) [Called from MediaWiki\Parser\ParserOutput::collectMetadata in /srv/mediawiki/php-1.43.0-wmf.21/includes/pa
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   PHP Warning: MediaWiki\Parser\ParserOutput::collectMetadata: bad type for 'translate-is-translation', set '1' (T373920) [Called from MediaWiki\Parser\ParserOutput::collectMetadata in /srv/mediawiki/php-1.43.0-wmf.21/includes/pa
exception.trace
from /srv/mediawiki/php-1.43.0-wmf.21/includes/debug/MWDebug.php(498)
#0 [internal function]: MWExceptionHandler::handleError(int, string, string, int, array)
#1 /srv/mediawiki/php-1.43.0-wmf.21/includes/debug/MWDebug.php(498): trigger_error(string, int)
#2 /srv/mediawiki/php-1.43.0-wmf.21/includes/debug/MWDebug.php(209): MediaWiki\Debug\MWDebug::sendMessage(string, string, int)
#3 /srv/mediawiki/php-1.43.0-wmf.21/includes/GlobalFunctions.php(832): MediaWiki\Debug\MWDebug::warning(string, int, int, string)
#4 /srv/mediawiki/php-1.43.0-wmf.21/includes/parser/ParserOutput.php(2557): wfLogWarning(string)
#5 /srv/mediawiki/php-1.43.0-wmf.21/includes/parser/Parsoid/Config/DataAccess.php(371): MediaWiki\Parser\ParserOutput->collectMetadata(MediaWiki\Parser\ParserOutput)
#6 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Utils/PipelineUtils.php(686): MediaWiki\Parser\Parsoid\Config\DataAccess->parseWikitext(MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\ParserOutput, string)
#7 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/TT/ExtensionHandler.php(150): Wikimedia\Parsoid\Utils\PipelineUtils::fetchHTML(Wikimedia\Parsoid\Config\Env, string)
#8 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/TT/ExtensionHandler.php(273): Wikimedia\Parsoid\Wt2Html\TT\ExtensionHandler->onExtension(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#9 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/TT/TokenHandler.php(138): Wikimedia\Parsoid\Wt2Html\TT\ExtensionHandler->onTag(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#10 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(113): Wikimedia\Parsoid\Wt2Html\TT\TokenHandler->process(array)
#11 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(166): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunk(array)
#12 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(132): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->process(array, array)
#13 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Utils/PipelineUtils.php(107): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parse(string, array)
#14 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(643): Wikimedia\Parsoid\Utils\PipelineUtils::processContentInPipeline(Wikimedia\Parsoid\Config\Env, Wikimedia\Parsoid\Wt2Html\PageConfigFrame, string, array)
#15 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(1080): Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->processTemplateSource(Wikimedia\Parsoid\Tokens\SelfclosingTagTk, array, string)
#16 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(1110): Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->expandTemplate(Wikimedia\Parsoid\Wt2Html\TT\TemplateEncapsulator)
#17 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(1151): Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->onTemplate(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#18 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/TT/TokenHandler.php(138): Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->onTag(Wikimedia\Parsoid\Tokens\SelfclosingTagTk)
#19 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(113): Wikimedia\Parsoid\Wt2Html\TT\TokenHandler->process(array)
#20 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(176): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunk(array)
#21 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(174): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunkily(string, array)
#22 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/TreeBuilder/TreeBuilderStage.php(476): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunkily(string, array)
#23 [internal function]: Wikimedia\Parsoid\Wt2Html\TreeBuilder\TreeBuilderStage->processChunkily(string, array)
#24 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(985): Generator->current()
#25 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(172): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->processChunkily(string, array)
#26 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipelineFactory.php(287): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseChunkily(string, array)
#27 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Wikitext/ContentModelHandler.php(176): Wikimedia\Parsoid\Wt2Html\ParserPipelineFactory->parse(string)
#28 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Parsoid.php(197): Wikimedia\Parsoid\Wikitext\ContentModelHandler->toDOM(Wikimedia\Parsoid\Ext\ParsoidExtensionAPI, null)
#29 /srv/mediawiki/php-1.43.0-wmf.21/vendor/wikimedia/parsoid/src/Parsoid.php(240): Wikimedia\Parsoid\Parsoid->parseWikitext(MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\ParserOutput, array, null)
#30 /srv/mediawiki/php-1.43.0-wmf.21/includes/parser/Parsoid/ParsoidParser.php(134): Wikimedia\Parsoid\Parsoid->wikitext2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array, null, MediaWiki\Parser\ParserOutput)
#31 /srv/mediawiki/php-1.43.0-wmf.21/includes/parser/Parsoid/ParsoidParser.php(248): MediaWiki\Parser\Parsoid\ParsoidParser->genParserOutput(MediaWiki\Parser\Parsoid\Config\PageConfig, ParserOptions, MediaWiki\Parser\ParserOutput)
#32 /srv/mediawiki/php-1.43.0-wmf.21/includes/content/WikitextContentHandler.php(384): MediaWiki\Parser\Parsoid\ParsoidParser->parse(string, MediaWiki\Title\Title, ParserOptions, bool, bool, int, MediaWiki\Parser\ParserOutput)
#33 /srv/mediawiki/php-1.43.0-wmf.21/includes/content/ContentHandler.php(1693): MediaWiki\Content\WikitextContentHandler->fillParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams, MediaWiki\Parser\ParserOutput)
#34 /srv/mediawiki/php-1.43.0-wmf.21/includes/content/Renderer/ContentRenderer.php(79): MediaWiki\Content\ContentHandler->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams)
#35 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RenderedRevision.php(262): MediaWiki\Content\Renderer\ContentRenderer->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Title\Title, MediaWiki\Revision\RevisionStoreRecord, ParserOptions, array)
#36 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RenderedRevision.php(234): MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(MediaWiki\Content\WikitextContent, array)
#37 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RevisionRenderer.php(234): MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#38 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RevisionRenderer.php(170): MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, ParserOptions, array)
#39 [internal function]: MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#40 /srv/mediawiki/php-1.43.0-wmf.21/includes/Revision/RenderedRevision.php(199): call_user_func(Closure, MediaWiki\Revision\RenderedRevision, array)
#41 /srv/mediawiki/php-1.43.0-wmf.21/includes/poolcounter/PoolWorkArticleView.php(97): MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#42 /srv/mediawiki/php-1.43.0-wmf.21/includes/poolcounter/PoolWorkArticleViewCurrent.php(114): MediaWiki\PoolCounter\PoolWorkArticleView->renderRevision(MediaWiki\Parser\ParserOutput)
#43 /srv/mediawiki/php-1.43.0-wmf.21/includes/poolcounter/PoolCounterWork.php(171): MediaWiki\PoolCounter\PoolWorkArticleViewCurrent->doWork()
#44 /srv/mediawiki/php-1.43.0-wmf.21/includes/page/ParserOutputAccess.php(358): MediaWiki\PoolCounter\PoolCounterWork->execute()
#45 /srv/mediawiki/php-1.43.0-wmf.21/includes/page/Article.php(826): MediaWiki\Page\ParserOutputAccess->getParserOutput(WikiPage, ParserOptions, MediaWiki\Revision\RevisionStoreRecord, int)
#46 /srv/mediawiki/php-1.43.0-wmf.21/includes/page/Article.php(545): Article->generateContentOutput(MediaWiki\User\User, ParserOptions, int, MediaWiki\Output\OutputPage, array)
#47 /srv/mediawiki/php-1.43.0-wmf.21/includes/actions/ViewAction.php(78): Article->view()
#48 /srv/mediawiki/php-1.43.0-wmf.21/includes/actions/ActionEntryPoint.php(731): ViewAction->show()
#49 /srv/mediawiki/php-1.43.0-wmf.21/includes/actions/ActionEntryPoint.php(508): MediaWiki\Actions\ActionEntryPoint->performAction(Article, MediaWiki\Title\Title)
#50 /srv/mediawiki/php-1.43.0-wmf.21/includes/actions/ActionEntryPoint.php(145): MediaWiki\Actions\ActionEntryPoint->performRequest()
#51 /srv/mediawiki/php-1.43.0-wmf.21/includes/MediaWikiEntryPoint.php(200): MediaWiki\Actions\ActionEntryPoint->execute()
#52 /srv/mediawiki/php-1.43.0-wmf.21/index.php(58): MediaWiki\MediaWikiEntryPoint->run()
#53 /srv/mediawiki/w/index.php(3): require(string)
#54 {main}
Impact
Notes

More than 7000 of these seen since rolling 1.43.0-wmf.21 to group0 today. It comes in big bursts. There are two variants:

  • MediaWiki\Parser\ParserOutput::collectMetadata: bad type for 'translate-is-translation', ...
  • MediaWiki\Parser\ParserOutput::collectMetadata: bad type for 'translate-has-languages-tag', ...

Event Timeline

dancy triaged this task as Unbreak Now! priority.Sep 4 2024, 5:44 PM
dancy created this task.

Yes, these are warnings @Jdforrester-WMF logged yday (as part of https://gerrit.wikimedia.org/r/c/mediawiki/core/+/1070326 ) to help us better fix the underlying issue -- the code works around it for now, but just is a noisy log. My recommendation is to filter out this warning and proceed. FYI. @cscott

There is also https://logstash.wikimedia.org/app/discover#/doc/logstash-*/logstash-deploy-1-7.0.0-1-2024.09.04?id=3VIgvpEBa-PL6vFem9kr for "translate-has-languages-tag" which has a very low frequency, but probably also a boolean from the translate extension.

Yes, these are warnings @Jdforrester-WMF logged yday (as part of https://gerrit.wikimedia.org/r/c/mediawiki/core/+/1070326 ) to help us better fix the underlying issue -- the code works around it for now, but just is a noisy log. My recommendation is to filter out this warning and proceed. FYI. @cscott

Are you expecting this to still be useful for debugging? Otherwise my preference would be to remove it, makes a few dashboards hard to read and if it's served its purpose then it'd be nice to remove it.

Change #1070658 had a related patch set uploaded (by Subramanya Sastry; author: Subramanya Sastry):

[mediawiki/core@master] ParserOutput: Turn off noisy log - we have the info we need for now

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

Yup, we have the info we need to fix caller sites and the patch above turns it off.

Change #1070660 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] ParserOutput::collectMetadata: Properly handle non-scalar page properties

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

Change #1070658 merged by jenkins-bot:

[mediawiki/core@master] ParserOutput: Turn off noisy log - we have the info we need for now

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

Sorry, I was out yesterday and wasn't able to review, but https://gerrit.wikimedia.org/r/c/mediawiki/core/+/1070660 is a better fix that avoids giving the wrong value for Parsoid's ParserOutput metadata -- ParserOutput from legacy called should (eg) represent false as false and not '' (which is the value you'd obtain from the implicit cast to string in ::setUnsortedPageProperty).

This difference barely matters at all in production because the LinksUpdate job is only using the legacy parser, which isn't going to use ParserOutput::collectMetadata() and thus is unaffected by T374046/T373920. The only real difference is going to be that Parsoid will think the page property value stored in the ParserOuput for false will be '' whereas the legacy parser would store it in the ParserOutput as boolean false (that value is then later converted to the string '0' in the database and the numeric value 0 as a sort key -- but those will be correct because they will still be coming from metadata generated by the legacy parser)

This is a long way of saying that you can probably cherry pick just 1070658 to quiet the logs and leave the "more correct" 1070660 to ride next week's train.

Change #1070663 had a related patch set uploaded (by C. Scott Ananian; author: Subramanya Sastry):

[mediawiki/core@wmf/1.43.0-wmf.21] ParserOutput: Turn off noisy log - we have the info we need for now

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

Change #1070663 merged by jenkins-bot:

[mediawiki/core@wmf/1.43.0-wmf.21] ParserOutput: Turn off noisy log - we have the info we need for now

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

Mentioned in SAL (#wikimedia-operations) [2024-09-04T20:17:14Z] <dancy@deploy1003> Started scap sync-world: Backport for [[gerrit:1070663|ParserOutput: Turn off noisy log - we have the info we need for now (T374046)]]

Mentioned in SAL (#wikimedia-operations) [2024-09-04T20:19:21Z] <dancy@deploy1003> dancy, cscott: Backport for [[gerrit:1070663|ParserOutput: Turn off noisy log - we have the info we need for now (T374046)]] synced to the testservers (https://wikitech.wikimedia.org/wiki/Mwdebug)

Mentioned in SAL (#wikimedia-operations) [2024-09-04T20:30:48Z] <dancy@deploy1003> Finished scap sync-world: Backport for [[gerrit:1070663|ParserOutput: Turn off noisy log - we have the info we need for now (T374046)]] (duration: 13m 33s)

Change #1070666 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/Translate@master] Replace use of ParserOutput::setPageProperty, deprecated in 1.42

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

Change #1070666 merged by jenkins-bot:

[mediawiki/extensions/Translate@master] Replace use of ParserOutput::setPageProperty, deprecated in 1.42

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

Change #1070660 merged by jenkins-bot:

[mediawiki/core@master] ParserOutput::collectMetadata: Properly handle non-scalar page properties

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

thcipriani lowered the priority of this task from Unbreak Now! to Needs Triage.Sep 6 2024, 4:36 PM

This is a long way of saying that you can probably cherry pick just 1070658 to quiet the logs and leave the "more correct" 1070660 to ride next week's train.

Ack, thanks. Removing from train blockers and resetting priority.

cscott claimed this task.