Page MenuHomePhabricator

PHP Notice: Undefined index: OutputHooks
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   PHP Notice: Undefined index: OutputHooks
exception.trace
from /srv/mediawiki/php-1.41.0-wmf.26/includes/parser/ParserOutput.php(2748)
#0 /srv/mediawiki/php-1.41.0-wmf.26/includes/parser/ParserOutput.php(2748): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 /srv/mediawiki/php-1.41.0-wmf.26/includes/parser/ParserOutput.php(2713): ParserOutput->initFromJson(MediaWiki\Json\JsonCodec, array)
#2 /srv/mediawiki/php-1.41.0-wmf.26/includes/json/JsonCodec.php(87): ParserOutput::newFromJsonArray(MediaWiki\Json\JsonCodec, array)
#3 /srv/mediawiki/php-1.41.0-wmf.26/includes/parser/ParserCache.php(585): MediaWiki\Json\JsonCodec->unserialize(array, string)
#4 /srv/mediawiki/php-1.41.0-wmf.26/includes/parser/ParserCache.php(357): ParserCache->restoreFromJson(string, string, string)
#5 /srv/mediawiki/php-1.41.0-wmf.26/includes/parser/Parsoid/ParsoidOutputAccess.php(389): ParserCache->get(MediaWiki\Page\PageStoreRecord, ParserOptions)
#6 /srv/mediawiki/php-1.41.0-wmf.26/includes/parser/Parsoid/ParsoidOutputAccess.php(221): MediaWiki\Parser\Parsoid\ParsoidOutputAccess->getCachedParserOutputInternal(MediaWiki\Page\PageStoreRecord, ParserOptions, MediaWiki\Revision\RevisionStoreRecord, boolean, string)
#7 /srv/mediawiki/php-1.41.0-wmf.26/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(746): MediaWiki\Parser\Parsoid\ParsoidOutputAccess->getParserOutput(MediaWiki\Page\PageStoreRecord, ParserOptions, MediaWiki\Revision\RevisionStoreRecord, integer)
#8 /srv/mediawiki/php-1.41.0-wmf.26/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(574): MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getParserOutputInternal(ParserOptions)
#9 /srv/mediawiki/php-1.41.0-wmf.26/includes/Rest/Handler/Helper/HtmlOutputRendererHelper.php(670): MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getParserOutput()
#10 /srv/mediawiki/php-1.41.0-wmf.26/includes/Rest/Handler/ParsoidHandler.php(918): MediaWiki\Rest\Handler\Helper\HtmlOutputRendererHelper->getPageBundle()
#11 /srv/mediawiki/php-1.41.0-wmf.26/vendor/wikimedia/parsoid/extension/src/Rest/Handler/PageHandler.php(92): MediaWiki\Rest\Handler\ParsoidHandler->wt2html(MediaWiki\Parser\Parsoid\Config\PageConfig, array)
#12 /srv/mediawiki/php-1.41.0-wmf.26/includes/Rest/Router.php(517): MWParsoid\Rest\Handler\PageHandler->execute()
#13 /srv/mediawiki/php-1.41.0-wmf.26/includes/Rest/Router.php(422): MediaWiki\Rest\Router->executeHandler(MWParsoid\Rest\Handler\PageHandler)
#14 /srv/mediawiki/php-1.41.0-wmf.26/includes/Rest/EntryPoint.php(195): MediaWiki\Rest\Router->execute(MediaWiki\Rest\RequestFromGlobals)
#15 /srv/mediawiki/php-1.41.0-wmf.26/includes/Rest/EntryPoint.php(135): MediaWiki\Rest\EntryPoint->execute()
#16 /srv/mediawiki/php-1.41.0-wmf.26/rest.php(31): MediaWiki\Rest\EntryPoint::main()
#17 /srv/mediawiki/w/rest.php(3): require(string)
#18 {main}
Impact
Notes

Details

Request URL
https://pl.wikibooks.org/w/rest.php/pl.wikibooks.org/v3/page/pagebundle/Kategoria%3AStrony_z_b%C5%82%C4%99dami_skrypt%C3%B3w/405526

Related Objects

Event Timeline

Looks like there's was a spike essentially at the moment of group1 deploy on group1 wikis, there was like 840 of these between 18:00 and 18:15, and none out of that interval. It feels highly plausible that it's related to https://gerrit.wikimedia.org/r/c/mediawiki/core/+/942499.

There was a spike of these errors for the wmf.26 code during the train deployment of wmf.27 to group1 yesterday: https://logstash.wikimedia.org/goto/cbf5b69caad010fbf9b4dff103034b6d

They stopped immediately after the deployment was completed, so I believe we can chalk this one up as a temporary deployment side effect.

ihurbain claimed this task.

Seems like a deployment side effect issue.

This notice is harmless, since OutputHooks hasn't been used in production since at least 1.38 (when deprecation notices were added to it). However @Nikerabbit points out on Slack that I really should have split this patch in two, and kept writing an empty array for $jsonData['OutputHooks'] until "the next train" from the patch which stopped reading $jsonData['OutputHooks'], so that we wouldn't get any of these notices if we needed to rollback. This was an oversight on my part, mea culpa.