Page MenuHomePhabricator

PHP Notice: Trying to access array offset on value of type bool (Wt2Html/PP/Processors/AddRedLinks.php)
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   PHP Notice: Trying to access array offset on value of type bool
exception.trace
from /srv/mediawiki/php-1.40.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/PP/Processors/AddRedLinks.php(82)
#0 /srv/mediawiki/php-1.40.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/PP/Processors/AddRedLinks.php(82): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-1.40.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(157): Wikimedia\Parsoid\Wt2Html\PP\Processors\AddRedLinks->run(Wikimedia\Parsoid\Config\Env, Wikimedia\Parsoid\DOM\Element, array, boolean)
#2 /srv/mediawiki/php-1.40.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(868): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->Wikimedia\Parsoid\Wt2Html\{closure}(Wikimedia\Parsoid\DOM\Element, array, boolean)
#3 /srv/mediawiki/php-1.40.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(909): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->doPostProcess(Wikimedia\Parsoid\DOM\Element)
#4 /srv/mediawiki/php-1.40.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(927): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->process(Wikimedia\Parsoid\DOM\Element)
#5 /srv/mediawiki/php-1.40.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(180): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->processChunkily(string, array)
#6 /srv/mediawiki/php-1.40.0-wmf.14/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipelineFactory.php(299): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseChunkily(string, array)
#7 /srv/mediawiki/php-1.40.0-wmf.14/vendor/wikimedia/parsoid/src/Wikitext/ContentModelHandler.php(124): Wikimedia\Parsoid\Wt2Html\ParserPipelineFactory->parse(string)
#8 /srv/mediawiki/php-1.40.0-wmf.14/vendor/wikimedia/parsoid/src/Parsoid.php(173): Wikimedia\Parsoid\Wikitext\ContentModelHandler->toDOM(Wikimedia\Parsoid\Ext\ParsoidExtensionAPI)
#9 /srv/mediawiki/php-1.40.0-wmf.14/vendor/wikimedia/parsoid/src/Parsoid.php(215): Wikimedia\Parsoid\Parsoid->parseWikitext(MediaWiki\Parser\Parsoid\Config\PageConfig, Wikimedia\Parsoid\Config\StubMetadataCollector, array)
#10 /srv/mediawiki/php-1.40.0-wmf.14/includes/parser/Parsoid/ParsoidOutputAccess.php(277): Wikimedia\Parsoid\Parsoid->wikitext2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array)
#11 /srv/mediawiki/php-1.40.0-wmf.14/includes/parser/Parsoid/ParsoidOutputAccess.php(433): MediaWiki\Parser\Parsoid\ParsoidOutputAccess->parseInternal(MediaWiki\Parser\Parsoid\Config\PageConfig, array)
#12 /srv/mediawiki/php-1.40.0-wmf.14/includes/parser/Parsoid/ParsoidOutputAccess.php(223): MediaWiki\Parser\Parsoid\ParsoidOutputAccess->parse(MediaWiki\Page\PageStoreRecord, ParserOptions, array, MediaWiki\Revision\RevisionStoreRecord)
#13 /srv/mediawiki/php-1.40.0-wmf.14/includes/Rest/Handler/HtmlOutputRendererHelper.php(542): MediaWiki\Parser\Parsoid\ParsoidOutputAccess->getParserOutput(MediaWiki\Page\PageStoreRecord, ParserOptions, MediaWiki\Revision\RevisionStoreRecord, integer)
#14 /srv/mediawiki/php-1.40.0-wmf.14/includes/Rest/Handler/HtmlOutputRendererHelper.php(642): MediaWiki\Rest\Handler\HtmlOutputRendererHelper->getParserOutput()
#15 /srv/mediawiki/php-1.40.0-wmf.14/includes/Rest/Handler/ParsoidHandler.php(873): MediaWiki\Rest\Handler\HtmlOutputRendererHelper->getPageBundle()
#16 /srv/mediawiki/php-1.40.0-wmf.14/vendor/wikimedia/parsoid/extension/src/Rest/Handler/PageHandler.php(92): MediaWiki\Rest\Handler\ParsoidHandler->wt2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array)
#17 /srv/mediawiki/php-1.40.0-wmf.14/includes/Rest/Router.php(487): MWParsoid\Rest\Handler\PageHandler->execute()
#18 /srv/mediawiki/php-1.40.0-wmf.14/includes/Rest/Router.php(406): MediaWiki\Rest\Router->executeHandler(MWParsoid\Rest\Handler\PageHandler)
#19 /srv/mediawiki/php-1.40.0-wmf.14/includes/Rest/EntryPoint.php(191): MediaWiki\Rest\Router->execute(MediaWiki\Rest\RequestFromGlobals)
#20 /srv/mediawiki/php-1.40.0-wmf.14/includes/Rest/EntryPoint.php(131): MediaWiki\Rest\EntryPoint->execute()
#21 /srv/mediawiki/php-1.40.0-wmf.14/rest.php(31): MediaWiki\Rest\EntryPoint::main()
#22 /srv/mediawiki/w/rest.php(3): require(string)
#23 {main}
Impact
Notes
  • 100+ in the last 24 hours, started today ~09:00UTC

Details

Request URL
https://en.wikipedia.org/w/rest.php/en.wikipedia.org/v3/page/pagebundle/User%3AGA_bot%2FStats/1127639520
Related Changes in Gerrit:

Event Timeline

parse_url can return false

New code from https://gerrit.wikimedia.org/r/c/mediawiki/services/parsoid/+/862176 / T309024 , part of v0.17.0-a9, seems the code is new in the train T320519 (it matches also the time from the server admin log)

echo "[[User:89119]]" | php bin/parse.php" is enough to reproduce it

RT testing caught cases like this and it resulted in the patch https://gerrit.wikimedia.org/r/c/mediawiki/services/parsoid/+/867160 where some defensive code was added for when clients returned urls that failed to parse. I guess, even though these urls are generated by parsoid, it can still produce examples parse_url can't handle.

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

[mediawiki/services/parsoid@master] Fix behavior of AddRedLinks when parse_url returns false

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

Change 868714 merged by jenkins-bot:

[mediawiki/services/parsoid@master] Fix behavior of AddRedLinks when parse_url returns false

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

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

[mediawiki/services/parsoid@master] Use Parsoid's UrlUtils::parseUrl to parse wikilinks

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

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

[mediawiki/vendor@master] Bump parsoid to 0.17.0-a10

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

Change 877256 merged by jenkins-bot:

[mediawiki/vendor@master] Bump parsoid to 0.17.0-a10

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

Change 868724 merged by jenkins-bot:

[mediawiki/services/parsoid@master] Use Parsoid's UrlUtils::parseUrl to parse wikilinks

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

Change 880501 had a related patch set uploaded (by Arlolra; author: Arlolra):

[mediawiki/vendor@master] Bump parsoid to 0.17.0-a11

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

Change 880501 merged by jenkins-bot:

[mediawiki/vendor@master] Bump parsoid to 0.17.0-a11

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

Last occurrence of this in the logs was on Jan 12, so I think we're good.