Page MenuHomePhabricator

PHP Warning: count(): Parameter must be an array or an object that implements Countable
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
labels.normalized_message
[{reqId}] {exception_url}   PHP Warning: count(): Parameter must be an array or an object that implements Countable
error.stack_trace
from /srv/mediawiki/wmf-config/CommonSettings.php(3719)
#0 /srv/mediawiki/wmf-config/CommonSettings.php(3719): MWExceptionHandler::handleError(integer, string, string, integer, array)
#1 [internal function]: wmfRenderEmptyGraphTag(string, array, MediaWiki\Parser\Parser, PPTemplateFrame_Hash)
#2 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/Parser.php(4042): call_user_func_array(string, array)
#3 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/CoreParserFunctions.php(1224): MediaWiki\Parser\Parser->extensionSubstitution(array, PPTemplateFrame_Hash)
#4 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/Parser.php(3463): CoreParserFunctions::tagObj(MediaWiki\Parser\Parser, PPTemplateFrame_Hash, array)
#5 /srv/mediawiki/php-1.43.0-wmf.12/extensions/Scribunto/includes/Engines/LuaCommon/LuaEngine.php(801): MediaWiki\Parser\Parser->callParserFunction(PPTemplateFrame_Hash, string, array)
#6 /srv/mediawiki/php-1.43.0-wmf.12/extensions/Scribunto/includes/Engines/LuaSandbox/LuaSandboxCallback.php(31): MediaWiki\Extension\Scribunto\Engines\LuaCommon\LuaEngine->callParserFunction(string, string, array)
#7 [internal function]: MediaWiki\Extension\Scribunto\Engines\LuaSandbox\LuaSandboxCallback->__call(string, array)
#8 /srv/mediawiki/php-1.43.0-wmf.12/extensions/Scribunto/includes/Engines/LuaSandbox/LuaSandboxInterpreter.php(136): LuaSandboxFunction->call(LuaSandboxFunction)
#9 /srv/mediawiki/php-1.43.0-wmf.12/extensions/Scribunto/includes/Engines/LuaCommon/LuaEngine.php(312): MediaWiki\Extension\Scribunto\Engines\LuaSandbox\LuaSandboxInterpreter->callFunction(LuaSandboxFunction, LuaSandboxFunction)
#10 /srv/mediawiki/php-1.43.0-wmf.12/extensions/Scribunto/includes/Engines/LuaCommon/LuaModule.php(75): MediaWiki\Extension\Scribunto\Engines\LuaCommon\LuaEngine->executeFunctionChunk(LuaSandboxFunction, PPTemplateFrame_Hash)
#11 /srv/mediawiki/php-1.43.0-wmf.12/extensions/Scribunto/includes/Hooks.php(175): MediaWiki\Extension\Scribunto\Engines\LuaCommon\LuaModule->invoke(string, PPTemplateFrame_Hash)
#12 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/Parser.php(3463): MediaWiki\Extension\Scribunto\Hooks->invokeHook(MediaWiki\Parser\Parser, PPTemplateFrame_Hash, array)
#13 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/Parser.php(3146): MediaWiki\Parser\Parser->callParserFunction(PPTemplateFrame_Hash, string, array)
#14 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/PPFrame_Hash.php(276): MediaWiki\Parser\Parser->braceSubstitution(array, PPTemplateFrame_Hash)
#15 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/PPTemplateFrame_Hash.php(161): PPFrame_Hash->expand(PPNode_Hash_Tree, integer)
#16 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/PPTemplateFrame_Hash.php(188): PPTemplateFrame_Hash->getNumberedArgument(string)
#17 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/Parser.php(3944): PPTemplateFrame_Hash->getArgument(string)
#18 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/PPFrame_Hash.php(293): MediaWiki\Parser\Parser->argSubstitution(array, PPTemplateFrame_Hash)
#19 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/Parser.php(3337): PPFrame_Hash->expand(PPNode_Hash_Tree)
#20 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/PPFrame_Hash.php(276): MediaWiki\Parser\Parser->braceSubstitution(array, PPTemplateFrame_Hash)
#21 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/PPTemplateFrame_Hash.php(98): PPFrame_Hash->expand(PPNode_Hash_Tree, integer)
#22 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/Parser.php(3334): PPTemplateFrame_Hash->cachedExpand(string, PPNode_Hash_Tree)
#23 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/PPFrame_Hash.php(276): MediaWiki\Parser\Parser->braceSubstitution(array, PPFrame_Hash)
#24 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/Parser.php(2980): PPFrame_Hash->expand(PPNode_Hash_Tree, integer)
#25 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/Parser.php(1626): MediaWiki\Parser\Parser->replaceVariables(string)
#26 /srv/mediawiki/php-1.43.0-wmf.12/includes/parser/Parser.php(728): MediaWiki\Parser\Parser->internalParse(string)
#27 /srv/mediawiki/php-1.43.0-wmf.12/includes/content/WikitextContentHandler.php(377): MediaWiki\Parser\Parser->parse(string, MediaWiki\Title\Title, ParserOptions, boolean, boolean, integer)
#28 /srv/mediawiki/php-1.43.0-wmf.12/includes/content/ContentHandler.php(1673): WikitextContentHandler->fillParserOutput(WikitextContent, MediaWiki\Content\Renderer\ContentParseParams, MediaWiki\Parser\ParserOutput)
#29 /srv/mediawiki/php-1.43.0-wmf.12/includes/content/Renderer/ContentRenderer.php(67): ContentHandler->getParserOutput(WikitextContent, MediaWiki\Content\Renderer\ContentParseParams)
#30 /srv/mediawiki/php-1.43.0-wmf.12/includes/Revision/RenderedRevision.php(260): MediaWiki\Content\Renderer\ContentRenderer->getParserOutput(WikitextContent, MediaWiki\Title\Title, MediaWiki\Revision\RevisionStoreCacheRecord, ParserOptions, boolean)
#31 /srv/mediawiki/php-1.43.0-wmf.12/includes/Revision/RenderedRevision.php(232): MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(WikitextContent, boolean)
#32 /srv/mediawiki/php-1.43.0-wmf.12/includes/Revision/RevisionRenderer.php(226): MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#33 /srv/mediawiki/php-1.43.0-wmf.12/includes/Revision/RevisionRenderer.php(164): MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, ParserOptions, array)
#34 [internal function]: MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#35 /srv/mediawiki/php-1.43.0-wmf.12/includes/Revision/RenderedRevision.php(199): call_user_func(Closure, MediaWiki\Revision\RenderedRevision, array)
#36 /srv/mediawiki/php-1.43.0-wmf.12/includes/poolcounter/PoolWorkArticleView.php(91): MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#37 /srv/mediawiki/php-1.43.0-wmf.12/includes/poolcounter/PoolWorkArticleViewCurrent.php(107): MediaWiki\PoolCounter\PoolWorkArticleView->renderRevision()
#38 /srv/mediawiki/php-1.43.0-wmf.12/includes/poolcounter/PoolCounterWork.php(171): MediaWiki\PoolCounter\PoolWorkArticleViewCurrent->doWork()
#39 /srv/mediawiki/php-1.43.0-wmf.12/includes/page/ParserOutputAccess.php(330): MediaWiki\PoolCounter\PoolCounterWork->execute()
#40 /srv/mediawiki/php-1.43.0-wmf.12/includes/page/Article.php(826): MediaWiki\Page\ParserOutputAccess->getParserOutput(WikiPage, ParserOptions, MediaWiki\Revision\RevisionStoreCacheRecord, integer)
#41 /srv/mediawiki/php-1.43.0-wmf.12/includes/page/Article.php(545): Article->generateContentOutput(MediaWiki\User\User, ParserOptions, integer, MediaWiki\Output\OutputPage, array)
#42 /srv/mediawiki/php-1.43.0-wmf.12/includes/actions/ViewAction.php(78): Article->view()
#43 /srv/mediawiki/php-1.43.0-wmf.12/includes/actions/ActionEntryPoint.php(731): ViewAction->show()
#44 /srv/mediawiki/php-1.43.0-wmf.12/includes/actions/ActionEntryPoint.php(508): MediaWiki\Actions\ActionEntryPoint->performAction(Article, MediaWiki\Title\Title)
#45 /srv/mediawiki/php-1.43.0-wmf.12/includes/actions/ActionEntryPoint.php(145): MediaWiki\Actions\ActionEntryPoint->performRequest()
#46 /srv/mediawiki/php-1.43.0-wmf.12/includes/MediaWikiEntryPoint.php(200): MediaWiki\Actions\ActionEntryPoint->execute()
#47 /srv/mediawiki/php-1.43.0-wmf.12/index.php(58): MediaWiki\MediaWikiEntryPoint->run()
#48 /srv/mediawiki/w/index.php(3): require(string)
#49 {main}
Impact
  • ~38000 warnings in the last 12 hours with two spikes, lower rate since 2024-07-09 04:00 UTC.
  • Happens on wikis which use Cyrillic script variations (ruwiki, cewiki, uzwiki, crhwiki, mdfwiki, bewiki, ttwiki, ukwiki, bawiki, azwiki, oswiki, ruwikinews).
Notes

Details

MediaWiki Version
1.43.0-wmf.12
Request URL
https://ce.wikipedia.org/wiki/%D0%94%D0%B8%D1%8F%D0%BA%D0%BE%D0%B2%D0%B8%D1%86%D0%B5

Event Timeline

Aklapper triaged this task as Unbreak Now! priority.Tue, Jul 9, 8:37 AM
Aklapper created this task.

Change #1052981 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[operations/mediawiki-config@master] wmfRenderEmptyGraphTag: Fix count() warning

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

This is pretty noisy in logstash, so the above fix will hopefully avoid the warnings. It might need further improvement later by someone who knows what the data looks like. (But it’s hopefully still better than reverting the whole tracking.)

Change #1052981 merged by jenkins-bot:

[operations/mediawiki-config@master] wmfRenderEmptyGraphTag: Fix count() warning

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

Mentioned in SAL (#wikimedia-operations) [2024-07-09T14:22:47Z] <logmsgbot> lucaswerkmeister-wmde@deploy1002 Started scap sync-world: Backport for [[gerrit:1052981|wmfRenderEmptyGraphTag: Fix count() warning (T369600)]]

Mentioned in SAL (#wikimedia-operations) [2024-07-09T14:29:25Z] <logmsgbot> lucaswerkmeister-wmde@deploy1002 lucaswerkmeister-wmde: Backport for [[gerrit:1052981|wmfRenderEmptyGraphTag: Fix count() warning (T369600)]] synced to the testservers (https://wikitech.wikimedia.org/wiki/Mwdebug)

Mentioned in SAL (#wikimedia-operations) [2024-07-09T14:37:22Z] <logmsgbot> lucaswerkmeister-wmde@deploy1002 Finished scap: Backport for [[gerrit:1052981|wmfRenderEmptyGraphTag: Fix count() warning (T369600)]] (duration: 14m 35s)

Apparently the error happened on two lines (L3719 and L3728), and the above change fixed the latter occurrence but not the former:

logspam-watch
1338    ▆▇▆▆▆▆▆ 1352    1452 ●  Error...............    (/srv/mediawiki/wmf-config/CommonSettings.php:3719) PHP Warning: count(): Parameter must be an array or an object that implements Countable
532     ▆▆▆▆▆▂_ 1352    1435    Error...............    (/srv/mediawiki/wmf-config/CommonSettings.php:3728) PHP Warning: count(): Parameter must be an array or an object that implements Countable

But I don’t see a second count() call in the whole file, certainly not on L3719 (which is $parseResult = \MediaWiki\Json\FormatJson::parse( $input );). It feels like this error is coming from processes that see a slightly different CommonSettings.php somehow? o_O

Okay, apparently those warnings come from a long-running eval.php running on mwmaint1002, which is presumably seeing an old version of CommonSettings.php. @Catrope will hopefully know what to do with that (I don’t think killing it is warranted yet).

Lucas_Werkmeister_WMDE lowered the priority of this task from Unbreak Now! to High.

This is done by now as far as I can tell.