Page MenuHomePhabricator

Wikimedia\Assert\UnreachableException: Trying to fetch node data without loading!
Open, Needs TriagePublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   Wikimedia\Assert\UnreachableException: Trying to fetch node data without loading!Node id: 63 Stored data: {"parsoid":{"stx":"simple","a":{"href":"./semaine"},"sa":{"href":"semaine"},"dsr":{"start":822,"end":833,"openWidth":2,"c
FrameLocationCall
from/srv/mediawiki/php-1.44.0-wmf.22/vendor/wikimedia/parsoid/src/Utils/DOMDataUtils.php(194)
#0/srv/mediawiki/php-1.44.0-wmf.22/vendor/wikimedia/parsoid/src/Utils/DOMDataUtils.php(1330)Wikimedia\Parsoid\Utils\DOMDataUtils::getNodeData(Wikimedia\Parsoid\DOM\Element)
#1/srv/mediawiki/php-1.44.0-wmf.22/vendor/wikimedia/parsoid/src/Utils/DOMDataUtils.php(713)Wikimedia\Parsoid\Utils\DOMDataUtils::storeRichAttributes(Wikimedia\Parsoid\DOM\Element, array)
#2/srv/mediawiki/php-1.44.0-wmf.22/vendor/wikimedia/parsoid/src/Utils/DOMUtils.php(84)Wikimedia\Parsoid\Utils\DOMDataUtils::storeDataAttribs(Wikimedia\Parsoid\DOM\Element, array)
#3/srv/mediawiki/php-1.44.0-wmf.22/vendor/wikimedia/parsoid/src/Utils/DOMUtils.php(88)Wikimedia\Parsoid\Utils\DOMUtils::visitDOM(Wikimedia\Parsoid\DOM\Element, array, array)
#4/srv/mediawiki/php-1.44.0-wmf.22/vendor/wikimedia/parsoid/src/Utils/DOMDataUtils.php(681)Wikimedia\Parsoid\Utils\DOMUtils::visitDOM(Wikimedia\Parsoid\DOM\Element, array, array)
#5/srv/mediawiki/php-1.44.0-wmf.22/vendor/wikimedia/parsoid/src/Core/DomPageBundle.php(263)Wikimedia\Parsoid\Utils\DOMDataUtils::visitAndStoreDataAttribs(Wikimedia\Parsoid\DOM\Element, array)
#6/srv/mediawiki/php-1.44.0-wmf.22/includes/OutputTransform/ContentDOMTransformStage.php(78)Wikimedia\Parsoid\Core\DomPageBundle::fromLoadedDocument(Wikimedia\Parsoid\DOM\Document, array)
#7/srv/mediawiki/php-1.44.0-wmf.22/includes/OutputTransform/ContentDOMTransformStage.php(33)MediaWiki\OutputTransform\ContentDOMTransformStage->parsoidTransform(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#8/srv/mediawiki/php-1.44.0-wmf.22/includes/OutputTransform/OutputTransformPipeline.php(80)MediaWiki\OutputTransform\ContentDOMTransformStage->transform(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#9/srv/mediawiki/php-1.44.0-wmf.22/includes/Output/OutputPage.php(2563)MediaWiki\OutputTransform\OutputTransformPipeline->run(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#10/srv/mediawiki/php-1.44.0-wmf.22/includes/Output/OutputPage.php(2645)MediaWiki\Output\OutputPage->getParserOutputText(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#11/srv/mediawiki/php-1.44.0-wmf.22/includes/page/Article.php(928)MediaWiki\Output\OutputPage->addParserOutput(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#12/srv/mediawiki/php-1.44.0-wmf.22/includes/page/Article.php(740)MediaWiki\Page\Article->doOutputFromParserCache(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, MediaWiki\Output\OutputPage, array)
#13/srv/mediawiki/php-1.44.0-wmf.22/includes/page/Article.php(552)MediaWiki\Page\Article->generateContentOutput(MediaWiki\User\User, MediaWiki\Parser\ParserOptions, int, MediaWiki\Output\OutputPage, array)
#14/srv/mediawiki/php-1.44.0-wmf.22/includes/actions/ViewAction.php(80)MediaWiki\Page\Article->view()
#15/srv/mediawiki/php-1.44.0-wmf.22/includes/actions/ActionEntryPoint.php(728)MediaWiki\Actions\ViewAction->show()
#16/srv/mediawiki/php-1.44.0-wmf.22/includes/actions/ActionEntryPoint.php(505)MediaWiki\Actions\ActionEntryPoint->performAction(MediaWiki\Page\Article, MediaWiki\Title\Title)
#17/srv/mediawiki/php-1.44.0-wmf.22/includes/actions/ActionEntryPoint.php(143)MediaWiki\Actions\ActionEntryPoint->performRequest()
#18/srv/mediawiki/php-1.44.0-wmf.22/includes/MediaWikiEntryPoint.php(202)MediaWiki\Actions\ActionEntryPoint->execute()
#19/srv/mediawiki/php-1.44.0-wmf.22/index.php(58)MediaWiki\MediaWikiEntryPoint->run()
#20/srv/mediawiki/w/index.php(3)require(string)
#21{main}
Impact
Notes

Probably related to T390628: Wikimedia\Assert\InvariantException: Invariant failed: Bogus nodeId given!

Event Timeline

Change #1132770 had a related patch set uploaded (by Reedy; author: Reedy):

[mediawiki/services/parsoid@master] DOMDataUtils: Add a space to error message

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

Change #1132770 merged by jenkins-bot:

[mediawiki/services/parsoid@master] DOMDataUtils: Add a space to error message

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

Change #1133204 had a related patch set uploaded (by Reedy; author: Reedy):

[mediawiki/services/parsoid@REL1_43] DOMDataUtils: Add a space to error message

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

Change #1133205 had a related patch set uploaded (by Reedy; author: Reedy):

[mediawiki/services/parsoid@REL1_42] DOMDataUtils: Add a space to error message

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

Change #1133207 had a related patch set uploaded (by Reedy; author: Reedy):

[mediawiki/services/parsoid@REL1_39] DOMDataUtils: Add a space to error message

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

Change #1133207 merged by jenkins-bot:

[mediawiki/services/parsoid@REL1_39] DOMDataUtils: Add a space to error message

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

Change #1133205 merged by jenkins-bot:

[mediawiki/services/parsoid@REL1_42] DOMDataUtils: Add a space to error message

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

Change #1133204 merged by jenkins-bot:

[mediawiki/services/parsoid@REL1_43] DOMDataUtils: Add a space to error message

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

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

[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.21.0-a24

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

Change #1134218 merged by jenkins-bot:

[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.21.0-a24

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

Seeing this again in 1.44.0-wmf.24 (T386219).

labels.normalized_message
[{reqId}] {exception_url}   Wikimedia\Assert\UnreachableException: Trying to fetch node data without loading! Node id: 48 Stored data: {"parsoid":{"dsr":{"start":684,"end":701,"openWidth":1,"closeWidth":0,"leadingWS":1,"trailingWS":0}},"mw":{},"storedId":
FrameLocationCall
from/srv/mediawiki/php-1.44.0-wmf.24/vendor/wikimedia/parsoid/src/Utils/DOMDataUtils.php(198)
#0/srv/mediawiki/php-1.44.0-wmf.24/vendor/wikimedia/parsoid/src/Utils/DOMDataUtils.php(1342)Wikimedia\Parsoid\Utils\DOMDataUtils::getNodeData(Wikimedia\Parsoid\DOM\Element)
#1/srv/mediawiki/php-1.44.0-wmf.24/vendor/wikimedia/parsoid/src/Utils/DOMDataUtils.php(725)Wikimedia\Parsoid\Utils\DOMDataUtils::storeRichAttributes(Wikimedia\Parsoid\DOM\Element, array)
#2/srv/mediawiki/php-1.44.0-wmf.24/vendor/wikimedia/parsoid/src/Utils/DOMUtils.php(84)Wikimedia\Parsoid\Utils\DOMDataUtils::storeDataAttribs(Wikimedia\Parsoid\DOM\Element, array)
#3/srv/mediawiki/php-1.44.0-wmf.24/vendor/wikimedia/parsoid/src/Utils/DOMUtils.php(88)Wikimedia\Parsoid\Utils\DOMUtils::visitDOM(Wikimedia\Parsoid\DOM\Element, array, array)
#4/srv/mediawiki/php-1.44.0-wmf.24/vendor/wikimedia/parsoid/src/Utils/DOMDataUtils.php(693)Wikimedia\Parsoid\Utils\DOMUtils::visitDOM(Wikimedia\Parsoid\DOM\Element, array, array)
#5/srv/mediawiki/php-1.44.0-wmf.24/vendor/wikimedia/parsoid/src/Core/DomPageBundle.php(269)Wikimedia\Parsoid\Utils\DOMDataUtils::visitAndStoreDataAttribs(Wikimedia\Parsoid\DOM\Element, array)
#6/srv/mediawiki/php-1.44.0-wmf.24/includes/OutputTransform/ContentDOMTransformStage.php(78)Wikimedia\Parsoid\Core\DomPageBundle::fromLoadedDocument(Wikimedia\Parsoid\DOM\Document, array)
#7/srv/mediawiki/php-1.44.0-wmf.24/includes/OutputTransform/ContentDOMTransformStage.php(33)MediaWiki\OutputTransform\ContentDOMTransformStage->parsoidTransform(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#8/srv/mediawiki/php-1.44.0-wmf.24/includes/OutputTransform/OutputTransformPipeline.php(80)MediaWiki\OutputTransform\ContentDOMTransformStage->transform(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#9/srv/mediawiki/php-1.44.0-wmf.24/includes/Output/OutputPage.php(2564)MediaWiki\OutputTransform\OutputTransformPipeline->run(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#10/srv/mediawiki/php-1.44.0-wmf.24/includes/Output/OutputPage.php(2646)MediaWiki\Output\OutputPage->getParserOutputText(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#11/srv/mediawiki/php-1.44.0-wmf.24/includes/page/Article.php(928)MediaWiki\Output\OutputPage->addParserOutput(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#12/srv/mediawiki/php-1.44.0-wmf.24/includes/page/Article.php(740)MediaWiki\Page\Article->doOutputFromParserCache(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, MediaWiki\Output\OutputPage, array)
#13/srv/mediawiki/php-1.44.0-wmf.24/includes/page/Article.php(552)MediaWiki\Page\Article->generateContentOutput(MediaWiki\User\User, MediaWiki\Parser\ParserOptions, int, MediaWiki\Output\OutputPage, array)
#14/srv/mediawiki/php-1.44.0-wmf.24/includes/actions/ViewAction.php(80)MediaWiki\Page\Article->view()
#15/srv/mediawiki/php-1.44.0-wmf.24/includes/actions/ActionEntryPoint.php(728)MediaWiki\Actions\ViewAction->show()
#16/srv/mediawiki/php-1.44.0-wmf.24/includes/actions/ActionEntryPoint.php(505)MediaWiki\Actions\ActionEntryPoint->performAction(MediaWiki\Page\Article, MediaWiki\Title\Title)
#17/srv/mediawiki/php-1.44.0-wmf.24/includes/actions/ActionEntryPoint.php(143)MediaWiki\Actions\ActionEntryPoint->performRequest()
#18/srv/mediawiki/php-1.44.0-wmf.24/includes/MediaWikiEntryPoint.php(202)MediaWiki\Actions\ActionEntryPoint->execute()
#19/srv/mediawiki/php-1.44.0-wmf.24/index.php(58)MediaWiki\MediaWikiEntryPoint->run()
#20/srv/mediawiki/w/index.php(3)require(string)
#21{main}

Yeah, it’s not going to be fixed by my patch as I just fixed a spacing error in the error message as it annoyed me :)

thcipriani renamed this task from Wikimedia\Assert\UnreachableException: Trying to fetch node data without loading!Node id: 63 Stored data: {"parsoid":{"stx":"simple","a":{"href":"./semaine"},"sa":{"href":"semaine"},"dsr":{"start":822,"end":833,"openWidth":2,"c to Wikimedia\Assert\UnreachableException: Trying to fetch node data without loading!.Apr 10 2025, 4:01 PM

Updated task title since this error is not very normalized.

Started with wmf/1.44.0-wmf.22 on 2025-03-26 when it rolled to group1 seems like it may be exclusive to dawiktionary

Reproducible: https://da.wiktionary.org/wiki/mercredi?useparsoid=1 ; note that https://da.wiktionary.org/wiki/mercredi?useparsoid=0 is fine. Also running via the API of integrated modes on parsoidtest1001 is fine; this is a bug in the OutputTransform pipeline after Parsoid is done parsing.

I can reproduce on parsoidtest1001:

$ sudo -u www-data php /srv/mediawiki/multiversion/MWScript.php view.php --wiki=dawiktionary mercredi > mercredi.wt
$ sudo -u www-data php /srv/mediawiki/multiversion/MWScript.php parse.php --wiki=dawiktionary -p < mercredi.wt 

seems like I should add a --page option to core's parse.php to save a step here. regardless, now I have something to look at...

Something is adding bogus HTML to the bottom of the document before the OutputTransform stages get started:

<!DOCTYPE html>
<html prefix="dc: http://purl.org/dc/terms/ mw: http://mediawiki.org/rdf/"><head prefix="mwr: https://da.wiktionary.org/wiki/Special:Redirect/"><meta charset="utf-8"/><meta property="mw:pageId" content="0"/><meta property="mw:pageNamespace" content="0"/>
...
</section></li></section></section></body>

<link rel="mw:PageProp/Category" href="./Kategori:Ugedage_på_fransk" data-object-id="63"/></html>

That post-body content is getting merged into the body by ExtractBody, and because it has a data-object-id attribute on it, it eventually "steals" the NodeData of a different legit node (which just happens to have ID 63) eventually causing the crash.

But where is that category tag coming from? I'm pretty sure the category name translates as "days of the week".

This orphan tag shows up locally using the API as well, but you have to use body_only=false:

$ php bin/parse.php --domain da.wiktionary.org --page mercredi --wrapSections --body_only=false
...
</section></section></body>

<link rel="mw:PageProp/Category" href="./Kategori:Ugedage_på_fransk" data-object-id="63"/></html>

Curiouser and curiouser, but at least now I can reproduce locally.

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

[mediawiki/services/parsoid@master] Don't hoist categories outside the <body> in the presence of bare <li>

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

Change #1156448 merged by jenkins-bot:

[mediawiki/services/parsoid@master] Don't hoist categories outside the <body> in the presence of bare <li>

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

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

[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.22.0-a7

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

Change #1159531 merged by jenkins-bot:

[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.22.0-a7

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