Page MenuHomePhabricator

uselang=sr-cyrl causes fatal exception of type "MWException"
Closed, ResolvedPublicPRODUCTION ERROR

Event Timeline

Fomafix created this task.Oct 19 2018, 5:08 AM
Restricted Application added a subscriber: Aklapper. · View Herald TranscriptOct 19 2018, 5:08 AM
Fomafix updated the task description. (Show Details)Oct 19 2018, 6:27 AM

https://de.wikipedia.org/w/index.php?title=Wikipedia:Spielwiese&action=edit&uselang=sr-cyrl is also affected. It seams to happen when values from Wikidata are included in the page.

Fomafix renamed this task from Fatal exception when using uselang=sr-cyrl or uselang=sr-latn on Wikidata to uselang=sr-cyrl and uselang=sr-latn causes fatal exception of type "MWException".Oct 19 2018, 8:52 AM
Fomafix updated the task description. (Show Details)
Fomafix added a subscriber: cscott.
Fomafix renamed this task from uselang=sr-cyrl and uselang=sr-latn causes fatal exception of type "MWException" to uselang=sr-cyrl causes fatal exception of type "MWException".Oct 19 2018, 10:06 AM
Fomafix updated the task description. (Show Details)
cscott added a comment.EditedOct 19 2018, 11:28 AM

Given that uselang processing is involved, perhaps https://gerrit.wikimedia.org/r/460039 is the proximate cause. Can we get a stack trace for that exception?

Also -- sr-cyrl, zh-hans-tw, etc are not actually the mediawiki-internal names for these languages. https://gerrit.wikimedia.org/r/460039 would have added support for using the standard names, but I'm a little bit surprised that anything is generating links to these "non-mediawiki" (but BCP 47 standard) codes. I mean, it's good -- we *should* be trying to move to using the proper BCP 47 codes -- but it's worth trying to track down where these links are coming from, since they wouldn't have worked prior to 460039.

Ok, merged T207447: uselang=zh-hant-hk causes fatal exception of type "BadMethodCallException" into this one, because the stack trace is pretty much identical:

This bug T207433, request ID W8llMwpAMEsAACb4rOcAAAAW:

0 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/lib/includes/LanguageWithConversion.php(260): SrConverter->translate(string, string)
#1 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/lib/includes/LanguageWithConversion.php(225): Wikibase\LanguageWithConversion->executeTranslate()
#2 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/lib/includes/LanguageFallbackChain.php(88): Wikibase\LanguageWithConversion->translate(string)
#3 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/lib/includes/Store/LanguageFallbackLabelDescriptionLookup.php(81): Wikibase\LanguageFallbackChain->extractPreferredValue(array)
#4 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/lib/includes/Store/LanguageFallbackLabelDescriptionLookup.php(53): Wikibase\Lib\Store\LanguageFallbackLabelDescriptionLookup->getTermFallback(array, array)
#5 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/client/includes/Usage/UsageTrackingLanguageFallbackLabelDescriptionLookup.php(72): Wikibase\Lib\Store\LanguageFallbackLabelDescriptionLookup->getLabel(Wikibase\DataModel\Entity\PropertyId)
#6 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/client/includes/DataAccess/Scribunto/WikibaseLanguageDependentLuaBindings.php(60): Wikibase\Client\Usage\UsageTrackingLanguageFallbackLabelDescriptionLookup->getLabel(Wikibase\DataModel\Entity\PropertyId)
#7 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibrary.php(546): Wikibase\Client\DataAccess\Scribunto\WikibaseLanguageDependentLuaBindings->getLabel(string)
#8 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Scribunto/includes/engines/LuaSandbox/Engine.php(393): Wikibase\Client\DataAccess\Scribunto\Scribunto_LuaWikibaseLibrary->getLabel(string)
#9 [internal function]: Scribunto_LuaSandboxCallback->__call(string, array)
#10 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Scribunto/includes/engines/LuaSandbox/Engine.php(316): LuaSandboxFunction->call(LuaSandboxFunction)
#11 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Scribunto/includes/engines/LuaCommon/LuaCommon.php(295): Scribunto_LuaSandboxInterpreter->callFunction(LuaSandboxFunction, LuaSandboxFunction)
#12 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Scribunto/includes/engines/LuaCommon/LuaCommon.php(967): Scribunto_LuaEngine->executeFunctionChunk(LuaSandboxFunction, PPTemplateFrame_Hash)
#13 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Scribunto/includes/common/Hooks.php(128): Scribunto_LuaModule->invoke(string, PPTemplateFrame_Hash)
#14 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3493): ScribuntoHooks::invokeHook(Parser, PPTemplateFrame_Hash, array)
#15 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3200): Parser->callParserFunction(PPTemplateFrame_Hash, string, array)
#16 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1114): Parser->braceSubstitution(array, PPTemplateFrame_Hash)
#17 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3374): PPFrame_Hash->expand(PPNode_Hash_Tree)
#18 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1114): Parser->braceSubstitution(array, PPTemplateFrame_Hash)
#19 /srv/mediawiki/php-1.32.0-wmf.26/extensions/ParserFunctions/includes/ExtParserFunctions.php(127): PPFrame_Hash->expand(PPNode_Hash_Tree)
#20 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3493): ExtParserFunctions::ifeqObj(Parser, PPTemplateFrame_Hash, array)
#21 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3200): Parser->callParserFunction(PPTemplateFrame_Hash, string, array)
#22 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1114): Parser->braceSubstitution(array, PPTemplateFrame_Hash)
#23 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3374): PPFrame_Hash->expand(PPNode_Hash_Tree)
#24 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1114): Parser->braceSubstitution(array, PPFrame_Hash)
#25 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3014): PPFrame_Hash->expand(PPNode_Hash_Tree, integer)
#26 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(1350): Parser->replaceVariables(string)
#27 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(476): Parser->internalParse(string)
#28 /srv/mediawiki/php-1.32.0-wmf.26/includes/content/WikitextContent.php(341): Parser->parse(string, Title, ParserOptions, boolean, boolean, integer)
#29 /srv/mediawiki/php-1.32.0-wmf.26/includes/content/AbstractContent.php(517): WikitextContent->fillParserOutput(Title, integer, ParserOptions, boolean, ParserOutput)
#30 /srv/mediawiki/php-1.32.0-wmf.26/includes/Revision/RenderedRevision.php(243): AbstractContent->getParserOutput(Title, integer, ParserOptions, boolean)
#31 /srv/mediawiki/php-1.32.0-wmf.26/includes/Revision/RenderedRevision.php(211): MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(WikitextContent, boolean)
#32 /srv/mediawiki/php-1.32.0-wmf.26/includes/Revision/RevisionRenderer.php(168): MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string)
#33 /srv/mediawiki/php-1.32.0-wmf.26/includes/Revision/RevisionRenderer.php(121): MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, array)
#34 [internal function]: Closure$MediaWiki\Revision\RevisionRenderer::getRenderedRevision#2(MediaWiki\Revision\RenderedRevision, array)
#35 /srv/mediawiki/php-1.32.0-wmf.26/includes/Revision/RenderedRevision.php(175): call_user_func(Closure$MediaWiki\Revision\RevisionRenderer::getRenderedRevision#2;3054, MediaWiki\Revision\RenderedRevision, array)
#36 /srv/mediawiki/php-1.32.0-wmf.26/includes/poolcounter/PoolWorkArticleView.php(194): MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#37 /srv/mediawiki/php-1.32.0-wmf.26/includes/poolcounter/PoolCounterWork.php(123): PoolWorkArticleView->doWork()
#38 /srv/mediawiki/php-1.32.0-wmf.26/includes/page/Article.php(774): PoolCounterWork->execute()
#39 /srv/mediawiki/php-1.32.0-wmf.26/includes/actions/ViewAction.php(68): Article->view()
#40 /srv/mediawiki/php-1.32.0-wmf.26/includes/MediaWiki.php(501): ViewAction->show()
#41 /srv/mediawiki/php-1.32.0-wmf.26/includes/MediaWiki.php(294): MediaWiki->performAction(Article, Title)
#42 /srv/mediawiki/php-1.32.0-wmf.26/includes/MediaWiki.php(860): MediaWiki->performRequest()
#43 /srv/mediawiki/php-1.32.0-wmf.26/includes/MediaWiki.php(517): MediaWiki->main()
#44 /srv/mediawiki/php-1.32.0-wmf.26/index.php(42): MediaWiki->run()
#45 /srv/mediawiki/w/index.php(3): include(string)
#46 {main}

vs T207447, request ID W8mX4QpAME8AAHLuf4oAAACK:

#0 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/lib/includes/LanguageWithConversion.php(260): LanguageConverter->translate(string, string)
#1 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/lib/includes/LanguageWithConversion.php(225): Wikibase\LanguageWithConversion->executeTranslate()
#2 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/lib/includes/LanguageFallbackChain.php(88): Wikibase\LanguageWithConversion->translate(string)
#3 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/lib/includes/Store/LanguageFallbackLabelDescriptionLookup.php(81): Wikibase\LanguageFallbackChain->extractPreferredValue(array)
#4 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/lib/includes/Store/LanguageFallbackLabelDescriptionLookup.php(53): Wikibase\Lib\Store\LanguageFallbackLabelDescriptionLookup->getTermFallback(array, array)
#5 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/client/includes/Usage/UsageTrackingLanguageFallbackLabelDescriptionLookup.php(72): Wikibase\Lib\Store\LanguageFallbackLabelDescriptionLookup->getLabel(Wikibase\DataModel\Entity\ItemId)
#6 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/client/includes/DataAccess/Scribunto/WikibaseLanguageDependentLuaBindings.php(60): Wikibase\Client\Usage\UsageTrackingLanguageFallbackLabelDescriptionLookup->getLabel(Wikibase\DataModel\Entity\ItemId)
#7 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Wikibase/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibrary.php(546): Wikibase\Client\DataAccess\Scribunto\WikibaseLanguageDependentLuaBindings->getLabel(string)
#8 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Scribunto/includes/engines/LuaSandbox/Engine.php(393): Wikibase\Client\DataAccess\Scribunto\Scribunto_LuaWikibaseLibrary->getLabel(string)
#9 [internal function]: Scribunto_LuaSandboxCallback->__call(string, array)
#10 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Scribunto/includes/engines/LuaSandbox/Engine.php(316): LuaSandboxFunction->call(LuaSandboxFunction)
#11 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Scribunto/includes/engines/LuaCommon/LuaCommon.php(295): Scribunto_LuaSandboxInterpreter->callFunction(LuaSandboxFunction, LuaSandboxFunction)
#12 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Scribunto/includes/engines/LuaCommon/LuaCommon.php(967): Scribunto_LuaEngine->executeFunctionChunk(LuaSandboxFunction, PPTemplateFrame_Hash)
#13 /srv/mediawiki/php-1.32.0-wmf.26/extensions/Scribunto/includes/common/Hooks.php(128): Scribunto_LuaModule->invoke(string, PPTemplateFrame_Hash)
#14 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3493): ScribuntoHooks::invokeHook(Parser, PPTemplateFrame_Hash, array)
#15 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3200): Parser->callParserFunction(PPTemplateFrame_Hash, string, array)
#16 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1114): Parser->braceSubstitution(array, PPTemplateFrame_Hash)
#17 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3374): PPFrame_Hash->expand(PPNode_Hash_Tree)
#18 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1114): Parser->braceSubstitution(array, PPTemplateFrame_Hash)
#19 /srv/mediawiki/php-1.32.0-wmf.26/extensions/ParserFunctions/includes/ExtParserFunctions.php(127): PPFrame_Hash->expand(PPNode_Hash_Tree)
#20 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3493): ExtParserFunctions::ifeqObj(Parser, PPTemplateFrame_Hash, array)
#21 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3200): Parser->callParserFunction(PPTemplateFrame_Hash, string, array)
#22 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1114): Parser->braceSubstitution(array, PPTemplateFrame_Hash)
#23 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3374): PPFrame_Hash->expand(PPNode_Hash_Tree)
#24 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1114): Parser->braceSubstitution(array, PPFrame_Hash)
#25 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3014): PPFrame_Hash->expand(PPNode_Hash_Tree, integer)
#26 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(1350): Parser->replaceVariables(string)
#27 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(684): Parser->internalParse(string, boolean, boolean)
#28 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(5127): Parser->recursiveTagParse(string)
#29 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/CoreTagHooks.php(157): Parser->renderImageGallery(string, array)
#30 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3968): CoreTagHooks::gallery(string, array, Parser, PPTemplateFrame_Hash)
#31 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1188): Parser->extensionSubstitution(array, PPTemplateFrame_Hash)
#32 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1546): PPFrame_Hash->expand(PPNode_Hash_Tree, integer)
#33 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3371): PPTemplateFrame_Hash->cachedExpand(string, PPNode_Hash_Tree)
#34 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1114): Parser->braceSubstitution(array, PPTemplateFrame_Hash)
#35 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3374): PPFrame_Hash->expand(PPNode_Hash_Tree)
#36 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1114): Parser->braceSubstitution(array, PPTemplateFrame_Hash)
#37 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1626): PPFrame_Hash->expand(PPNode_Hash_Tree, integer)
#38 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1638): PPTemplateFrame_Hash->getNamedArgument(string)
#39 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3881): PPTemplateFrame_Hash->getArgument(string)
#40 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1131): Parser->argSubstitution(array, PPTemplateFrame_Hash)
#41 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3374): PPFrame_Hash->expand(PPNode_Hash_Tree)
#42 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1114): Parser->braceSubstitution(array, PPTemplateFrame_Hash)
#43 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3374): PPFrame_Hash->expand(PPNode_Hash_Tree)
#44 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1114): Parser->braceSubstitution(array, PPFrame_Hash)
#45 /srv/mediawiki/php-1.32.0-wmf.26/extensions/ParserFunctions/includes/ExtParserFunctions.php(389): PPFrame_Hash->expand(PPNode_Hash_Tree)
#46 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3493): ExtParserFunctions::ifexistObj(Parser, PPFrame_Hash, array)
#47 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3200): Parser->callParserFunction(PPFrame_Hash, string, array)
#48 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Preprocessor_Hash.php(1114): Parser->braceSubstitution(array, PPFrame_Hash)
#49 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(3014): PPFrame_Hash->expand(PPNode_Hash_Tree, integer)
#50 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(1350): Parser->replaceVariables(string)
#51 /srv/mediawiki/php-1.32.0-wmf.26/includes/parser/Parser.php(476): Parser->internalParse(string)
#52 /srv/mediawiki/php-1.32.0-wmf.26/includes/content/WikitextContent.php(341): Parser->parse(string, Title, ParserOptions, boolean, boolean, integer)
#53 /srv/mediawiki/php-1.32.0-wmf.26/includes/content/AbstractContent.php(517): WikitextContent->fillParserOutput(Title, integer, ParserOptions, boolean, ParserOutput)
#54 /srv/mediawiki/php-1.32.0-wmf.26/includes/Revision/RenderedRevision.php(243): AbstractContent->getParserOutput(Title, integer, ParserOptions, boolean)
#55 /srv/mediawiki/php-1.32.0-wmf.26/includes/Revision/RenderedRevision.php(211): MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(WikitextContent, boolean)
#56 /srv/mediawiki/php-1.32.0-wmf.26/includes/Revision/RevisionRenderer.php(168): MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string)
#57 /srv/mediawiki/php-1.32.0-wmf.26/includes/Revision/RevisionRenderer.php(121): MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, array)
#58 [internal function]: Closure$MediaWiki\Revision\RevisionRenderer::getRenderedRevision#2(MediaWiki\Revision\RenderedRevision, array)
#59 /srv/mediawiki/php-1.32.0-wmf.26/includes/Revision/RenderedRevision.php(175): call_user_func(Closure$MediaWiki\Revision\RevisionRenderer::getRenderedRevision#2;731, MediaWiki\Revision\RenderedRevision, array)
#60 /srv/mediawiki/php-1.32.0-wmf.26/includes/poolcounter/PoolWorkArticleView.php(194): MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#61 /srv/mediawiki/php-1.32.0-wmf.26/includes/poolcounter/PoolCounterWork.php(123): PoolWorkArticleView->doWork()
#62 /srv/mediawiki/php-1.32.0-wmf.26/includes/page/Article.php(774): PoolCounterWork->execute()
#63 /srv/mediawiki/php-1.32.0-wmf.26/includes/actions/ViewAction.php(68): Article->view()
#64 /srv/mediawiki/php-1.32.0-wmf.26/includes/MediaWiki.php(501): ViewAction->show()
#65 /srv/mediawiki/php-1.32.0-wmf.26/includes/MediaWiki.php(294): MediaWiki->performAction(Article, Title)
#66 /srv/mediawiki/php-1.32.0-wmf.26/includes/MediaWiki.php(860): MediaWiki->performRequest()
#67 /srv/mediawiki/php-1.32.0-wmf.26/includes/MediaWiki.php(517): MediaWiki->main()
#68 /srv/mediawiki/php-1.32.0-wmf.26/index.php(42): MediaWiki->run()
#69 /srv/mediawiki/w/index.php(3): include(string)
#70 {main}

In both cases, LanguageConverter->translate() is being invoked with a BCP 47 code, not a mediawiki-internal code. SrConverter and LanguageConverter (used for zhwiki) handle this in slightly different ways, but the root cause is the same. This appears to be a Wikibase bug, it is not converting BCP 47 codes to mediawiki-internal codes appropriately.

Unfortunately, no referrer field is present in either log entry.

In the past seven days only 32 hits for BadMethodCallException (most of which are not this bug). 41 hits for the exception in LanguageSr, though, most of which are this bug. So not super-high frequency. I'll figure out root cause and write a patch.

Arrrrgh. WikiBase/lib/includes/LanguageWithConversion.php contains code cut-and-pasted from mediawiki-core. Anyone want to guess the odds that it wasn't updated when the code from core was updated?

I generated the URLs containing uselang=sr-cyrl myself. They are not generated by a link.

Ah, ok, thanks! That means I don't have to worry about this being an "unbreak now" sort of bug.

https://gerrit.wikimedia.org/r/468589 is a stopgap at fixing the issue, but there's a deeper confusion between BCP 47 and mediawiki internal codes which is causing the BCP 47 codes to make it into Wikibase's LanguageFallbackChain. Still working on that...

Change 468589 had a related patch set uploaded (by C. Scott Ananian; owner: C. Scott Ananian):
[mediawiki/core@master] Include BCP 47 codes in $wgDummyLanguageCodes, but deprecate it

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

Change 468630 had a related patch set uploaded (by C. Scott Ananian; owner: C. Scott Ananian):
[mediawiki/core@master] Make Language::hasVariant() more strict

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

OK, two patches to fix the issue: belt and suspenders. Both of them are potential candidates for cherry-picking to 1.32, but let's get them merged on 1.33 first.

Change 468589 merged by jenkins-bot:
[mediawiki/core@master] Include BCP 47 codes in $wgDummyLanguageCodes, but deprecate it

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

Change 468630 merged by jenkins-bot:
[mediawiki/core@master] Make Language::hasVariant() more strict

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

Change 469252 had a related patch set uploaded (by Jforrester; owner: C. Scott Ananian):
[mediawiki/core@REL1_32] Include BCP 47 codes in $wgDummyLanguageCodes, but deprecate it

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

Change 469255 had a related patch set uploaded (by C. Scott Ananian; owner: C. Scott Ananian):
[mediawiki/core@REL1_32] Make Language::hasVariant() more strict

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

Change 469252 merged by jenkins-bot:
[mediawiki/core@REL1_32] Include BCP 47 codes in $wgDummyLanguageCodes, but deprecate it

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

Change 469255 merged by jenkins-bot:
[mediawiki/core@REL1_32] Make Language::hasVariant() more strict

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

Jdforrester-WMF closed this task as Resolved.Oct 24 2018, 8:12 PM
Jdforrester-WMF claimed this task.
Jdforrester-WMF removed a project: Patch-For-Review.
Jdforrester-WMF added a subscriber: Jdforrester-WMF.

Fixed in 1.32 and 1.33.0-wmf.1; good enough.

mmodell changed the subtype of this task from "Task" to "Production Error".Aug 28 2019, 11:08 PM