Page MenuHomePhabricator

The content model 'Json.JsonConfig' is not registered on this wiki(Collabwiki)
Closed, ResolvedPublic

Description

message
The content model 'Json.JsonConfig' is not registered on this wiki.
trace
[20230420081832]: MWUnknownContentModelException from line 203 of /srv/mediawiki/php-1.41.0-wmf.5/includes/content/ContentHandlerFactory.php: The content model 'Json.JsonConfig' is not registered on this wiki.
See https://www.mediawiki.org/wiki/Content_handlers to find out which extensions handle this content model.
#0 /srv/mediawiki/php-1.41.0-wmf.5/includes/content/ContentHandlerFactory.php(273): MediaWiki\Content\ContentHandlerFactory->validateContentHandler('Json.JsonConfig', NULL)
#1 /srv/mediawiki/php-1.41.0-wmf.5/includes/content/ContentHandlerFactory.php(191): MediaWiki\Content\ContentHandlerFactory->createContentHandlerFromHook('Json.JsonConfig')
#2 /srv/mediawiki/php-1.41.0-wmf.5/includes/content/ContentHandlerFactory.php(97): MediaWiki\Content\ContentHandlerFactory->createForModelID('Json.JsonConfig')
#3 /srv/mediawiki/php-1.41.0-wmf.5/includes/export/XmlDumpWriter.php(474): MediaWiki\Content\ContentHandlerFactory->getContentHandler('Json.JsonConfig')
#4 /srv/mediawiki/php-1.41.0-wmf.5/includes/export/XmlDumpWriter.php(402): XmlDumpWriter->writeSlot(Object(MediaWiki\Revision\SlotRecord), 1)
#5 /srv/mediawiki/php-1.41.0-wmf.5/includes/export/WikiExporter.php(563): XmlDumpWriter->writeRevision(Object(stdClass), Array)
#6 /srv/mediawiki/php-1.41.0-wmf.5/includes/export/WikiExporter.php(501): WikiExporter->outputPageStreamBatch(Object(Wikimedia\Rdbms\MysqliResultWrapper), Object(stdClass))
#7 /srv/mediawiki/php-1.41.0-wmf.5/includes/export/WikiExporter.php(325): WikiExporter->dumpPages('page_id >= 5001...', false)
#8 /srv/mediawiki/php-1.41.0-wmf.5/includes/export/WikiExporter.php(208): WikiExporter->dumpFrom('page_id >= 5001...', false)
#9 /srv/mediawiki/php-1.41.0-wmf.5/maintenance/includes/BackupDumper.php(360): WikiExporter->pagesByRange(5001, 10001, false)
#10 /srv/mediawiki/php-1.41.0-wmf.5/maintenance/dumpBackup.php(82): BackupDumper->dump(1, 1)
#11 /srv/mediawiki/php-1.41.0-wmf.5/maintenance/includes/MaintenanceRunner.php(681): DumpBackup->execute()
#12 /srv/mediawiki/php-1.41.0-wmf.5/maintenance/run.php(51): MediaWiki\Maintenance\MaintenanceRunner->run()
#13 /srv/mediawiki/multiversion/MWScript.php(140): require_once('/srv/mediawiki/...')
#14 {main}
MWUnknownContentModelException from line 203 of /srv/mediawiki/php-1.41.0-wmf.5/includes/content/ContentHandlerFactory.php: The content model 'Json.JsonConfig' is not registered on this wiki.
See https://www.mediawiki.org/wiki/Content_handlers to find out which extensions handle this content model.
#0 /srv/mediawiki/php-1.41.0-wmf.5/includes/content/ContentHandlerFactory.php(273): MediaWiki\Content\ContentHandlerFactory->validateContentHandler('Json.JsonConfig', NULL)
#1 /srv/mediawiki/php-1.41.0-wmf.5/includes/content/ContentHandlerFactory.php(191): MediaWiki\Content\ContentHandlerFactory->createContentHandlerFromHook('Json.JsonConfig')
#2 /srv/mediawiki/php-1.41.0-wmf.5/includes/content/ContentHandlerFactory.php(97): MediaWiki\Content\ContentHandlerFactory->createForModelID('Json.JsonConfig')
#3 /srv/mediawiki/php-1.41.0-wmf.5/includes/export/XmlDumpWriter.php(474): MediaWiki\Content\ContentHandlerFactory->getContentHandler('Json.JsonConfig')
#4 /srv/mediawiki/php-1.41.0-wmf.5/includes/export/XmlDumpWriter.php(402): XmlDumpWriter->writeSlot(Object(MediaWiki\Revision\SlotRecord), 1)
#5 /srv/mediawiki/php-1.41.0-wmf.5/includes/export/WikiExporter.php(563): XmlDumpWriter->writeRevision(Object(stdClass), Array)
#6 /srv/mediawiki/php-1.41.0-wmf.5/includes/export/WikiExporter.php(501): WikiExporter->outputPageStreamBatch(Object(Wikimedia\Rdbms\MysqliResultWrapper), Object(stdClass))
#7 /srv/mediawiki/php-1.41.0-wmf.5/includes/export/WikiExporter.php(325): WikiExporter->dumpPages('page_id >= 5001...', false)
#8 /srv/mediawiki/php-1.41.0-wmf.5/includes/export/WikiExporter.php(208): WikiExporter->dumpFrom('page_id >= 5001...', false)
#9 /srv/mediawiki/php-1.41.0-wmf.5/maintenance/includes/BackupDumper.php(360): WikiExporter->pagesByRange(5001, 10001, false)
#10 /srv/mediawiki/php-1.41.0-wmf.5/maintenance/dumpBackup.php(82): BackupDumper->dump(1, 1)
#11 /srv/mediawiki/php-1.41.0-wmf.5/maintenance/includes/MaintenanceRunner.php(681): DumpBackup->execute()
#12 /srv/mediawiki/php-1.41.0-wmf.5/maintenance/run.php(51): MediaWiki\Maintenance\MaintenanceRunner->run()
#13 /srv/mediawiki/multiversion/MWScript.php(140): require_once('/srv/mediawiki/...')
#14 {main}

Event Timeline

We saw this when the job that dumps metadata for all revisions was running for this wiki; This is the only wiki impacted so far

The page at issue has the title Json:World-110m, it used to be in the Data: namespace, i.e. with the full title Data:Json:World-110m but that namespace was removed sometime between the April 1st dump run and the beginning of the April 20th run.

Aha, this’ll be why – the Json.JsonConfig namespace content model is, confusingly, not added by JsonConfig itself, but in CommonSettings.php:

	if ( $wmgUseGraphWithJsonNamespace ) {
		$wgJsonConfigModels['Json.JsonConfig'] = null;
		$wgJsonConfigs['Json.JsonConfig'] = [
			'namespace' => 486,
			'nsName' => 'Data',
			'isLocal' => true,
			'pattern' => '/^Json:./',
		];
	}

And all this is in if ( $wmgUseGraph ) {, which remains disabled, despite @Zabe reenabling JsonConfig on its own earlier.

	if ( $wmgUseGraphWithJsonNamespace ) {
		$wgJsonConfigModels['Json.JsonConfig'] = null;
		$wgJsonConfigs['Json.JsonConfig'] = [
			'namespace' => 486,
			'nsName' => 'Data',
			'isLocal' => true,
			'pattern' => '/^Json:./',
		];
	}

I think it should be fine to move this block outside of the $wmgUseGraph check, so that it runs on wikis with $wmgUseGraphWithJsonNamespace = true even when Graph is disabled? (collabwiki is the only such wiki left anyways, “To be removed as per T124748”, mediawikiwiki having been removed earlier today incidentally.)

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

[operations/mediawiki-config@master] Make $wmgUseGraphWithJsonNamespace depend on $wmgUseJsonConfig

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

I think it should be fine to move this block outside of the $wmgUseGraph check, so that it runs on wikis with $wmgUseGraphWithJsonNamespace = true even when Graph is disabled?

On second thought, let’s move it into the $wmgUseJsonConfig block instead. I missed earlier that this assigns to $wgJsonConfigModels and $wgJsonConfigs, not e.g. $wgContentHandlers, so I assume it wouldn’t have any effect if JsonConfig wasn’t loaded.

Change 910479 merged by jenkins-bot:

[operations/mediawiki-config@master] Make $wmgUseGraphWithJsonNamespace depend on $wmgUseJsonConfig

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

Mentioned in SAL (#wikimedia-operations) [2023-04-20T14:42:41Z] <lucaswerkmeister-wmde@deploy2002> Started scap: Backport for [[gerrit:910479|Make $wmgUseGraphWithJsonNamespace depend on $wmgUseJsonConfig (T335130)]]

Mentioned in SAL (#wikimedia-operations) [2023-04-20T14:43:56Z] <lucaswerkmeister-wmde@deploy2002> lucaswerkmeister-wmde: Backport for [[gerrit:910479|Make $wmgUseGraphWithJsonNamespace depend on $wmgUseJsonConfig (T335130)]] synced to the testservers: mwdebug1002.eqiad.wmnet, mwdebug1001.eqiad.wmnet, mwdebug2001.codfw.wmnet, mwdebug2002.codfw.wmnet

Mentioned in SAL (#wikimedia-operations) [2023-04-20T14:50:22Z] <lucaswerkmeister-wmde@deploy2002> Finished scap: Backport for [[gerrit:910479|Make $wmgUseGraphWithJsonNamespace depend on $wmgUseJsonConfig (T335130)]] (duration: 07m 40s)

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

[operations/mediawiki-config@master] Set wmgUseGraphWithJsonNamespace = true for mediawikiwiki

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

Change 910780 merged by jenkins-bot:

[operations/mediawiki-config@master] Set wmgUseGraphWithJsonNamespace = true for mediawikiwiki

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

Mentioned in SAL (#wikimedia-operations) [2023-04-21T15:47:13Z] <lucaswerkmeister-wmde@deploy2002> Started scap: Backport for [[gerrit:910780|Set wmgUseGraphWithJsonNamespace = true for mediawikiwiki (T124748 T335130)]]

Mentioned in SAL (#wikimedia-operations) [2023-04-21T15:48:48Z] <lucaswerkmeister-wmde@deploy2002> lucaswerkmeister-wmde: Backport for [[gerrit:910780|Set wmgUseGraphWithJsonNamespace = true for mediawikiwiki (T124748 T335130)]] synced to the testservers: mwdebug1002.eqiad.wmnet, mwdebug2001.codfw.wmnet, mwdebug1001.eqiad.wmnet, mwdebug2002.codfw.wmnet

Mentioned in SAL (#wikimedia-operations) [2023-04-21T15:57:15Z] <lucaswerkmeister-wmde@deploy2002> Finished scap: Backport for [[gerrit:910780|Set wmgUseGraphWithJsonNamespace = true for mediawikiwiki (T124748 T335130)]] (duration: 10m 01s)

A note just to say that the mediawiki metadata dumps ran successfully after this patch was deployed. Thanks!

I am not sure if it's relevant here, but in case it's useful: The is a way to keep page histories and diffs workign after a content model has been removed from a wiki. That's the job of FallbackContentHandler. Just register it for the relevant content model, e.g.:

$wgContentHandlers['Json.JsonConfig'] = FallbackContentHandler::class;

I am not sure if it's relevant here, but in case it's useful: The is a way to keep page histories and diffs workign after a content model has been removed from a wiki. That's the job of FallbackContentHandler. Just register it for the relevant content model, e.g.:

$wgContentHandlers['Json.JsonConfig'] = FallbackContentHandler::class;

Yeah, we have a set of shims for otherwise-removed extensions/code in WikimediaMessages; perhaps it should be put there if the code shouldn't be in the Graph extension any more?

ArielGlenn claimed this task.

Closing this task since the dumps do run to completion now.