Page MenuHomePhabricator

JsonConfig: Exception: This method may only be called during or after validation has started
Open, Needs TriagePublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   Exception: This method may only be called during or after validation has started
exception.trace
from /srv/mediawiki/php-1.40.0-wmf.14/extensions/JsonConfig/includes/JCObjContent.php(80)
#0 /srv/mediawiki/php-1.40.0-wmf.14/extensions/JsonConfig/includes/JCObjContent.php(453): JsonConfig\JCObjContent->getValidationData()
#1 /srv/mediawiki/php-1.40.0-wmf.14/extensions/JsonConfig/includes/JCDataContent.php(120): JsonConfig\JCObjContent->getField(string)
#2 /srv/mediawiki/php-1.40.0-wmf.14/extensions/JsonConfig/includes/JCSingleton.php(772): JsonConfig\JCDataContent->getLicenseObject()
#3 /srv/mediawiki/php-1.40.0-wmf.14/extensions/JsonConfig/includes/JCSingleton.php(879): JsonConfig\JCSingleton::getTitleLicenseCode(JsonConfig\JCTitle)
#4 /srv/mediawiki/php-1.40.0-wmf.14/includes/HookContainer/HookContainer.php(338): JsonConfig\JCSingleton::onSkinCopyrightFooter(Title, string, string, string)
#5 /srv/mediawiki/php-1.40.0-wmf.14/includes/HookContainer/HookContainer.php(137): MediaWiki\HookContainer\HookContainer->callLegacyHook(string, array, array, array)
#6 /srv/mediawiki/php-1.40.0-wmf.14/includes/HookContainer/HookRunner.php(3460): MediaWiki\HookContainer\HookContainer->run(string, array)
#7 [internal function]: MediaWiki\HookContainer\HookRunner->onSkinCopyrightFooter(Title, string, string, string)
#8 /srv/mediawiki/php-1.40.0-wmf.14/includes/skins/components/SkinComponentRegistryContext.php(139): call_user_func_array(array, array)
#9 /srv/mediawiki/php-1.40.0-wmf.14/includes/skins/components/SkinComponentFooter.php(170): MediaWiki\Skin\SkinComponentRegistryContext->runHook(string, array)
#10 /srv/mediawiki/php-1.40.0-wmf.14/includes/skins/components/SkinComponentFooter.php(126): MediaWiki\Skin\SkinComponentFooter->getCopyright()
#11 /srv/mediawiki/php-1.40.0-wmf.14/includes/skins/components/SkinComponentFooter.php(35): MediaWiki\Skin\SkinComponentFooter->getFooterInfoData()
#12 /srv/mediawiki/php-1.40.0-wmf.14/includes/skins/components/SkinComponentFooter.php(57): MediaWiki\Skin\SkinComponentFooter->getTemplateDataFooter()
#13 /srv/mediawiki/php-1.40.0-wmf.14/includes/skins/Skin.php(182): MediaWiki\Skin\SkinComponentFooter->getTemplateData()
#14 /srv/mediawiki/php-1.40.0-wmf.14/includes/skins/SkinTemplate.php(186): Skin->getTemplateData()
#15 /srv/mediawiki/php-1.40.0-wmf.14/includes/skins/SkinMustache.php(88): SkinTemplate->getTemplateData()
#16 /srv/mediawiki/php-1.40.0-wmf.14/skins/Vector/includes/SkinVectorLegacy.php(175): SkinMustache->getTemplateData()
#17 /srv/mediawiki/php-1.40.0-wmf.14/includes/skins/SkinMustache.php(58): MediaWiki\Skins\Vector\SkinVectorLegacy->getTemplateData()
#18 /srv/mediawiki/php-1.40.0-wmf.14/includes/skins/SkinTemplate.php(179): SkinMustache->generateHTML()
#19 /srv/mediawiki/php-1.40.0-wmf.14/includes/OutputPage.php(2889): SkinTemplate->outputPage()
#20 /srv/mediawiki/php-1.40.0-wmf.14/includes/MediaWiki.php(931): OutputPage->output(boolean)
#21 /srv/mediawiki/php-1.40.0-wmf.14/includes/MediaWiki.php(571): MediaWiki->main()
#22 /srv/mediawiki/php-1.40.0-wmf.14/index.php(50): MediaWiki->run()
#23 /srv/mediawiki/php-1.40.0-wmf.14/index.php(46): wfIndexMain()
#24 /srv/mediawiki/w/index.php(3): require(string)
#25 {main}
Impact
Notes

Only one occurrence, most probably triggered by user input?

That comes from onSkinCopyrightFooter hook and JsonConfig.

Details

Request URL
https://commons.wikimedia.org/wiki/Data:Sandbox/0x010C/test.map

Event Timeline

Jdlrobson subscribed.

The SkinCopyrightFooter hook is called in mediawiki core, so this looks like an issue in JsonConfig to me. The exception is called here https://gerrit.wikimedia.org/g/mediawiki/extensions/JsonConfig/+/9291e65ba3e96c4f9e60300d271eb7c4b6ec8122/includes/JCObjContent.php#81

Vector has no special handling for copyright notice.

hashar renamed this task from Exception: This method may only be called during or after validation has started to JsonConfig: Exception: This method may only be called during or after validation has started.Jan 4 2023, 8:20 AM

Thanks @Jdlrobson. I am adding #product-infrastructure-team-backlog which apparently maintains JsonConfig according to mw:Developers/Maintainers.

From what I see in the logs there is only a few references to this issue:
https://logstash.wikimedia.org/goto/bad1aa38bacd3f3d6a3484d730f9a4e2

Since JsonConfig is not something we actively work on, is it something we should prioritize?
If not, lets just keep an eye and prioritize if it becomes more frequent.

I can replicate this reliably on https://commons.wikimedia.org/wiki/Data:Sandbox/0x010C/test.map?useskin=vector-2022
While traffic is low, I guess the risk here is if a spider / bot targets this URL at larger volumes this would spike.