Page MenuHomePhabricator

Wikimedia\Assert\InvariantException: Invariant failed: Bad UTF-8 at end of string (2 byte sequence)
Open, Needs TriagePublicPRODUCTION ERROR

Description

Error
labels.normalized_message
[{reqId}] {exception_url}   Wikimedia\Assert\InvariantException: Invariant failed: Bad UTF-8 at end of string (2 byte sequence)
error.stack_trace
from /srv/mediawiki/php-1.43.0-wmf.15/vendor/wikimedia/assert/src/Assert.php(231)
#0 /srv/mediawiki/php-1.43.0-wmf.15/vendor/wikimedia/parsoid/src/Utils/PHPUtils.php(194): Wikimedia\Assert\Assert::invariant(boolean, string)
#1 /srv/mediawiki/php-1.43.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/DOM/Processors/DOMRangeBuilder.php(956): Wikimedia\Parsoid\Utils\PHPUtils::safeSubstr(string, integer, integer)
#2 /srv/mediawiki/php-1.43.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/DOM/Processors/DOMRangeBuilder.php(1270): Wikimedia\Parsoid\Wt2Html\DOM\Processors\DOMRangeBuilder->encapsulateTemplates(array)
#3 /srv/mediawiki/php-1.43.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/DOM/Processors/WrapTemplates.php(21): Wikimedia\Parsoid\Wt2Html\DOM\Processors\DOMRangeBuilder->execute(Wikimedia\Parsoid\DOM\Element)
#4 /srv/mediawiki/php-1.43.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(139): Wikimedia\Parsoid\Wt2Html\DOM\Processors\WrapTemplates->run(Wikimedia\Parsoid\Config\Env, Wikimedia\Parsoid\DOM\Element, array, boolean)
#5 /srv/mediawiki/php-1.43.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(903): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->Wikimedia\Parsoid\Wt2Html\{closure}(Wikimedia\Parsoid\DOM\Element, array, boolean)
#6 /srv/mediawiki/php-1.43.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(944): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->doPostProcess(Wikimedia\Parsoid\DOM\Element)
#7 /srv/mediawiki/php-1.43.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(962): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->process(Wikimedia\Parsoid\DOM\Element)
#8 /srv/mediawiki/php-1.43.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(170): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->processChunkily(string, array)
#9 /srv/mediawiki/php-1.43.0-wmf.15/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipelineFactory.php(279): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseChunkily(string, array)
#10 /srv/mediawiki/php-1.43.0-wmf.15/vendor/wikimedia/parsoid/src/Wikitext/ContentModelHandler.php(159): Wikimedia\Parsoid\Wt2Html\ParserPipelineFactory->parse(string)
#11 /srv/mediawiki/php-1.43.0-wmf.15/vendor/wikimedia/parsoid/src/Parsoid.php(194): Wikimedia\Parsoid\Wikitext\ContentModelHandler->toDOM(Wikimedia\Parsoid\Ext\ParsoidExtensionAPI)
#12 /srv/mediawiki/php-1.43.0-wmf.15/vendor/wikimedia/parsoid/src/Parsoid.php(236): Wikimedia\Parsoid\Parsoid->parseWikitext(MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\ParserOutput, array)
#13 /srv/mediawiki/php-1.43.0-wmf.15/includes/parser/Parsoid/ParsoidParser.php(149): Wikimedia\Parsoid\Parsoid->wikitext2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array, NULL, MediaWiki\Parser\ParserOutput)
#14 /srv/mediawiki/php-1.43.0-wmf.15/includes/parser/Parsoid/ParsoidParser.php(287): MediaWiki\Parser\Parsoid\ParsoidParser->genParserOutput(MediaWiki\Parser\Parsoid\Config\PageConfig, ParserOptions)
#15 /srv/mediawiki/php-1.43.0-wmf.15/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(931): MediaWiki\Parser\Parsoid\ParsoidParser->parseFakeRevision(MediaWiki\Revision\MutableRevisionRecord, MediaWiki\Page\PageStoreRecord, ParserOptions)
#16 /srv/mediawiki/php-1.43.0-wmf.15/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(894): MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->parseUncacheable(MediaWiki\Page\PageStoreRecord, ParserOptions, MediaWiki\Revision\MutableRevisionRecord, boolean)
#17 /srv/mediawiki/php-1.43.0-wmf.15/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(622): MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getParserOutputInternal(ParserOptions)
#18 /srv/mediawiki/php-1.43.0-wmf.15/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(717): MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getParserOutput()
#19 /srv/mediawiki/php-1.43.0-wmf.15/includes/Rest/Handler/ParsoidHandler.php(736): MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getPageBundle()
#20 /srv/mediawiki/php-1.43.0-wmf.15/includes/Rest/Handler/TransformHandler.php(136): MediaWiki\Rest\Handler\ParsoidHandler->wt2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array, string)
#21 /srv/mediawiki/php-1.43.0-wmf.15/includes/Rest/Module/Module.php(380): MediaWiki\Rest\Handler\TransformHandler->execute()
#22 /srv/mediawiki/php-1.43.0-wmf.15/includes/Rest/Module/Module.php(269): MediaWiki\Rest\Module\Module->executeHandler(MWParsoid\Rest\Handler\TransformHandler)
#23 /srv/mediawiki/php-1.43.0-wmf.15/includes/Rest/Router.php(477): MediaWiki\Rest\Module\Module->execute(string, MediaWiki\Rest\RequestFromGlobals)
#24 /srv/mediawiki/php-1.43.0-wmf.15/includes/Rest/Router.php(446): MediaWiki\Rest\Router->doExecute(string, MediaWiki\Rest\RequestFromGlobals)
#25 /srv/mediawiki/php-1.43.0-wmf.15/includes/Rest/EntryPoint.php(209): MediaWiki\Rest\Router->execute(MediaWiki\Rest\RequestFromGlobals)
#26 /srv/mediawiki/php-1.43.0-wmf.15/includes/MediaWikiEntryPoint.php(200): MediaWiki\Rest\EntryPoint->execute()
#27 /srv/mediawiki/php-1.43.0-wmf.15/rest.php(39): MediaWiki\MediaWikiEntryPoint->run()
#28 /srv/mediawiki/w/rest.php(3): require(string)
#29 {main}
Impact
Notes

Maybe started around 1.43.0-wmf.4. 4591 of these since then.

Details

Request URL
https://ru.wikipedia.org/w/rest.php/ru.wikipedia.org/v3/transform/wikitext/to/pagebundle/Main_Page

Event Timeline

From T325761#8721649

The only utf-8 ones left now have always been for "Main Page" of ukwiki, ruwiki, bewiki. That indicates someone is POSTing some wikitext to the API which makes it harder to debug without having access to the wikitext in question. We have been ignoring this in the Parsoid logstash for a while now as possibly user error. But, maybe we should dump the wikitext being POSTed and see if we can figure out if it is an issue in Parsoid. But, need to figure out what the best way to do this is since the POSTed wikitext could be large blobs.

jnuche triaged this task as Unbreak Now! priority.Aug 8 2024, 10:27 AM
jnuche subscribed.

We got a continuous stream of this error and of T371875 after deploying wmf.17 to group2:

image.png (438×1 px, 68 KB)

Out of caution, I'm rolling back the train and setting these two errors as train blockers until someone can verify the actual impact

jnuche lowered the priority of this task from Unbreak Now! to Needs Triage.Aug 8 2024, 12:29 PM

See convo in T371875

Error
normalized_message
[{reqId}] {exception_url}   Wikimedia\Assert\InvariantException: Invariant failed: Bad UTF-8 at end of string (2 byte sequence)
FrameLocationCall
from/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/assert/src/Assert.php(231)
#0/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/parsoid/src/Utils/PHPUtils.php(204)Wikimedia\Assert\Assert::invariant(bool, string)
#1/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/parsoid/src/Wt2Html/DOM/Processors/DOMRangeBuilder.php(954)Wikimedia\Parsoid\Utils\PHPUtils::safeSubstr(string, int, int)
#2/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/parsoid/src/Wt2Html/DOM/Processors/DOMRangeBuilder.php(1273)Wikimedia\Parsoid\Wt2Html\DOM\Processors\DOMRangeBuilder->encapsulateTemplates(array)
#3/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/parsoid/src/Wt2Html/DOM/Processors/WrapTemplates.php(26)Wikimedia\Parsoid\Wt2Html\DOM\Processors\DOMRangeBuilder->execute(Wikimedia\Parsoid\DOM\Element)
#4/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/parsoid/src/Wt2Html/DOMProcessorPipeline.php(140)Wikimedia\Parsoid\Wt2Html\DOM\Processors\WrapTemplates->run(Wikimedia\Parsoid\Config\Env, Wikimedia\Parsoid\DOM\Element, array, bool)
#5/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/parsoid/src/Wt2Html/DOMProcessorPipeline.php(171)Wikimedia\Parsoid\Wt2Html\DOMProcessorPipeline->doPostProcess(Wikimedia\Parsoid\DOM\Element)
#6/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/parsoid/src/Wt2Html/DOMProcessorPipeline.php(189)Wikimedia\Parsoid\Wt2Html\DOMProcessorPipeline->process(Wikimedia\Parsoid\DOM\Element, array)
#7/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(164)Wikimedia\Parsoid\Wt2Html\DOMProcessorPipeline->processChunkily(string, array)
#8/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipelineFactory.php(592)Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseChunkily(string, array)
#9/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/parsoid/src/Wikitext/ContentModelHandler.php(177)Wikimedia\Parsoid\Wt2Html\ParserPipelineFactory->parse(string)
#10/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/parsoid/src/Parsoid.php(198)Wikimedia\Parsoid\Wikitext\ContentModelHandler->toDOM(Wikimedia\Parsoid\Ext\ParsoidExtensionAPI, null)
#11/srv/mediawiki/php-1.44.0-wmf.18/vendor/wikimedia/parsoid/src/Parsoid.php(263)Wikimedia\Parsoid\Parsoid->parseWikitext(MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\ParserOutput, array, null)
#12/srv/mediawiki/php-1.44.0-wmf.18/includes/parser/Parsoid/ParsoidParser.php(165)Wikimedia\Parsoid\Parsoid->wikitext2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array, null, MediaWiki\Parser\ParserOutput)
#13/srv/mediawiki/php-1.44.0-wmf.18/includes/parser/Parsoid/ParsoidParser.php(294)MediaWiki\Parser\Parsoid\ParsoidParser->genParserOutput(MediaWiki\Parser\Parsoid\Config\PageConfig, MediaWiki\Parser\ParserOptions, null)
#14/srv/mediawiki/php-1.44.0-wmf.18/includes/content/WikitextContentHandler.php(384)MediaWiki\Parser\Parsoid\ParsoidParser->parse(string, MediaWiki\Title\Title, MediaWiki\Parser\ParserOptions, bool, bool, int, null)
#15/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)
#16/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)
#17/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\MutableRevisionRecord, MediaWiki\Parser\ParserOptions, array)
#18/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RenderedRevision.php(233)MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(MediaWiki\Content\WikitextContent, array)
#19/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RevisionRenderer.php(236)MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#20/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RevisionRenderer.php(169)MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, MediaWiki\Parser\ParserOptions, array)
#21/srv/mediawiki/php-1.44.0-wmf.18/includes/Revision/RenderedRevision.php(196)MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#22/srv/mediawiki/php-1.44.0-wmf.18/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(949)MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#23/srv/mediawiki/php-1.44.0-wmf.18/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(901)MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->parseUncacheable(MediaWiki\Page\PageStoreRecord, MediaWiki\Revision\MutableRevisionRecord, bool)
#24/srv/mediawiki/php-1.44.0-wmf.18/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(641)MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getParserOutputInternal()
#25/srv/mediawiki/php-1.44.0-wmf.18/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(735)MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getParserOutput()
#26/srv/mediawiki/php-1.44.0-wmf.18/includes/Rest/Handler/ParsoidHandler.php(739)MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getPageBundle()
#27/srv/mediawiki/php-1.44.0-wmf.18/includes/Rest/Handler/TransformHandler.php(184)MediaWiki\Rest\Handler\ParsoidHandler->wt2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array, string)
#28/srv/mediawiki/php-1.44.0-wmf.18/includes/Rest/Module/Module.php(415)MediaWiki\Rest\Handler\TransformHandler->execute()
#29/srv/mediawiki/php-1.44.0-wmf.18/includes/Rest/Module/Module.php(298)MediaWiki\Rest\Module\Module->executeHandler(MWParsoid\Rest\Handler\TransformHandler)
#30/srv/mediawiki/php-1.44.0-wmf.18/includes/Rest/Router.php(485)MediaWiki\Rest\Module\Module->execute(string, MediaWiki\Rest\RequestFromGlobals)
#31/srv/mediawiki/php-1.44.0-wmf.18/includes/Rest/Router.php(444)MediaWiki\Rest\Router->doExecute(string, MediaWiki\Rest\RequestFromGlobals)
#32/srv/mediawiki/php-1.44.0-wmf.18/includes/Rest/EntryPoint.php(209)MediaWiki\Rest\Router->execute(MediaWiki\Rest\RequestFromGlobals)
#33/srv/mediawiki/php-1.44.0-wmf.18/includes/MediaWikiEntryPoint.php(202)MediaWiki\Rest\EntryPoint->execute()
#34/srv/mediawiki/php-1.44.0-wmf.18/rest.php(39)MediaWiki\MediaWikiEntryPoint->run()
#35/srv/mediawiki/w/rest.php(3)require(string)
#36{main}
Impact
Notes

Possible replication:

Template:Ta

<includeonly>{|
<div>
</includeonly>

Template:Tb

<includeonly>
</div>|}
</includeonly>

Page

{{Ta}}
řaa
<table>
<tr><td>
a
</td></tr>
</table>
{{Tb}}

Letter ř in this case can be replaced with any 2 byte utf-8 character.
Error stack trace:

Wikimedia\Assert\InvariantException from line 231 of /var/www/html/w/vendor/wikimedia/assert/src/Assert.php: Invariant failed: Bad UTF-8 at end of string (2 byte sequence)
#0 /Users/osleger/Projects/parsoid/src/Utils/PHPUtils.php(200): Wikimedia\Assert\Assert::invariant()
#1 /Users/osleger/Projects/parsoid/src/Wt2Html/DOM/Processors/DOMRangeBuilder.php(953): Wikimedia\Parsoid\Utils\PHPUtils::safeSubstr()
#2 /Users/osleger/Projects/parsoid/src/Wt2Html/DOM/Processors/DOMRangeBuilder.php(1278): Wikimedia\Parsoid\Wt2Html\DOM\Processors\DOMRangeBuilder->encapsulateTemplates()
#3 /Users/osleger/Projects/parsoid/src/Wt2Html/DOM/Processors/WrapTemplates.php(26): Wikimedia\Parsoid\Wt2Html\DOM\Processors\DOMRangeBuilder->execute()
#4 /Users/osleger/Projects/parsoid/src/Wt2Html/DOMProcessorPipeline.php(135): Wikimedia\Parsoid\Wt2Html\DOM\Processors\WrapTemplates->run()
#5 /Users/osleger/Projects/parsoid/src/Wt2Html/DOMProcessorPipeline.php(179): Wikimedia\Parsoid\Wt2Html\DOMProcessorPipeline->doPostProcess()
#6 /Users/osleger/Projects/parsoid/src/Wt2Html/DOMProcessorPipeline.php(200): Wikimedia\Parsoid\Wt2Html\DOMProcessorPipeline->process()
#7 /Users/osleger/Projects/parsoid/src/Wt2Html/ParserPipeline.php(165): Wikimedia\Parsoid\Wt2Html\DOMProcessorPipeline->processChunkily()
#8 /Users/osleger/Projects/parsoid/src/Wt2Html/ParserPipelineFactory.php(619): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseChunkily()
#9 /Users/osleger/Projects/parsoid/src/Wikitext/ContentModelHandler.php(185): Wikimedia\Parsoid\Wt2Html\ParserPipelineFactory->parse()
#10 /Users/osleger/Projects/parsoid/src/Parsoid.php(198): Wikimedia\Parsoid\Wikitext\ContentModelHandler->toDOM()
#11 /Users/osleger/Projects/parsoid/src/Parsoid.php(264): Wikimedia\Parsoid\Parsoid->parseWikitext()
#12 /var/www/html/w/includes/parser/Parsoid/ParsoidParser.php(165): Wikimedia\Parsoid\Parsoid->wikitext2html()
#13 /var/www/html/w/includes/parser/Parsoid/ParsoidParser.php(294): MediaWiki\Parser\Parsoid\ParsoidParser->genParserOutput()
#14 /var/www/html/w/maintenance/parse.php(97): MediaWiki\Parser\Parsoid\ParsoidParser->parse()
#15 /var/www/html/w/maintenance/parse.php(87): CLIParser->render()
#16 /var/www/html/w/maintenance/includes/MaintenanceRunner.php(691): CLIParser->execute()
#17 /var/www/html/w/maintenance/run.php(51): MediaWiki\Maintenance\MaintenanceRunner->run()
#18 {main}

Link to production error:
https://outreach.wikimedia.org/w/index.php?oldid=45210&useparsoid=1

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

[mediawiki/services/parsoid@master] WIP: Reproduce T371617

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

I was debuging this scenario, figured out what is wrong, but I am not sure, what parsoid should in this scenario do. Problem is like this:

Into the tree builder, this set of tokens comes:

0-[HTML]       | {"type":"SelfclosingTagTk","name":"meta","attribs":[{"k":"typeof","v":"mw:Transclusion"},{"k":"about","v":"#mwt1"}],"dataParsoid":{"tsr":[0,6],"src":"{{Ta}}"}}
0-[HTML]       | {"type":"TagTk","name":"table","attribs":[],"dataParsoid":{}}
0-[HTML]       | {"type":"NlTk","dataParsoid":{}}
0-[HTML]       | {"type":"TagTk","name":"div","attribs":[],"dataParsoid":{"stx":"html"}}
0-[HTML]       | {"type":"NlTk","dataParsoid":{}}
0-[HTML]       | {"type":"SelfclosingTagTk","name":"meta","attribs":[{"k":"typeof","v":"mw:Transclusion/End"},{"k":"about","v":"#mwt1"}],"dataParsoid":{"tsr":[null,6]}}
0-[HTML]       | {"type":"NlTk","dataParsoid":{"tsr":[6,7]}}
0-[HTML]       | {"type":"TagTk","name":"p","attribs":[],"dataParsoid":{}}
0-[HTML]       | řaaaaaaa
0-[HTML]       | {"type":"EndTagTk","name":"p","attribs":[],"dataParsoid":{}}

Everything like I would expect, but in tree builder, this DOM is generated:

<meta typeof="mw:Transclusion" about="#mwt1" data-parsoid='{"tsr":[0,6],"src":"{{Ta}}"}'/><div data-parsoid='{"stx":"html","autoInsertedEnd":true}'>
<meta typeof="mw:Transclusion/End" about="#mwt1" data-parsoid='{"tsr":[null,6]}'/>
<p data-parsoid="{}">řaaaaaaa</p>

a</div><table data-parsoid='{"autoInsertedEnd":true}'>
</table>

At first I thought, that moved table node under the paragraph is problem, but when compared to behavior of legacy parser, it is expected. What is not expected is that table is removed from template meta tags, by which is table recognized as part of template.

Then when DSR calculation is in process, table takes bytes from original text, like it was not part of the template. It takes 2 bytes for table macro ("{|") and 1 byte for newline present inside of table (in template).

Then template wrapper comes in, and uses wrongly calculated DSR to split text and if luck is not on Parsoid side, it will split UTF-8 character and goes to exception.

What I am not sure is, how Should result look like

hi team! just a heads up that there are more errors and we updated the ticket https://phabricator.wikimedia.org/T410286
Thanks for your help!

Hi Everyone,
We are still getting the above errors.

"wmf api call returned status not 200, 206 or 302 for url https://fr.wikipedia.org/w/rest.php/v1/revision/231309717/html? with error 500 Internal Server Error:{\"message\":\"Error:exceptionoftypeWikimedia\\\\Assert\\\\InvariantException\",\"reqId\":\"c2bb862e-608d-4aff-8e81-ba0271efede6\",\"httpCode\":500,\"httpReason\":\"InternalServerError\"}"

your help is very appreciated. Thanks!

Another instance of the error

https://fr.wikipedia.org/w/rest.php/v1/revision/232458284/html? with error 500 Internal Server Error:{\"message\":\"Error:exceptionoftypeWikimedia\\\\Assert\\\\InvariantException\",\"reqId\":\"ce9043d1-b6b8-4bb1-8795-5850f722e6be\",\"httpCode\":500,\"httpReason\":\"InternalServerError\"}",