Page MenuHomePhabricator

TypeError: Return value of GlobalPreferences\Hooks::getPreferencesFactory() must be an instance of GlobalPreferences\GlobalPreferencesFactory, instance of MediaWiki\Preferences\DefaultPreferencesFactory returned
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   TypeError: Return value of GlobalPreferences\Hooks::getPreferencesFactory() must be an instance of GlobalPreferences\GlobalPreferencesFactory, instance of MediaWiki\Preferences\DefaultPreferencesFactory returned
exception.trace
from /srv/mediawiki/php-1.37.0-wmf.12/extensions/GlobalPreferences/includes/Hooks.php(285)
#0 /srv/mediawiki/php-1.37.0-wmf.12/extensions/GlobalPreferences/includes/Hooks.php(41): GlobalPreferences\Hooks::getPreferencesFactory()
#1 /srv/mediawiki/php-1.37.0-wmf.12/includes/HookContainer/HookContainer.php(338): GlobalPreferences\Hooks::onUserLoadOptions(User, array)
#2 /srv/mediawiki/php-1.37.0-wmf.12/includes/HookContainer/HookContainer.php(137): MediaWiki\HookContainer\HookContainer->callLegacyHook(string, array, array, array)
#3 /srv/mediawiki/php-1.37.0-wmf.12/includes/HookContainer/HookRunner.php(4212): MediaWiki\HookContainer\HookContainer->run(string, array)
#4 /srv/mediawiki/php-1.37.0-wmf.12/includes/user/UserOptionsManager.php(625): MediaWiki\HookContainer\HookRunner->onUserLoadOptions(User, array)
#5 /srv/mediawiki/php-1.37.0-wmf.12/includes/user/UserOptionsManager.php(487): MediaWiki\User\UserOptionsManager->loadOriginalOptions(User, integer, NULL)
#6 /srv/mediawiki/php-1.37.0-wmf.12/includes/user/UserOptionsManager.php(141): MediaWiki\User\UserOptionsManager->loadUserOptions(User, integer)
#7 /srv/mediawiki/php-1.37.0-wmf.12/includes/parser/ParserOptions.php(1254): MediaWiki\User\UserOptionsManager->getOption(User, string)
#8 /srv/mediawiki/php-1.37.0-wmf.12/includes/parser/ParserOptions.php(1042): ParserOptions->initialiseFromUser(User, Language)
#9 /srv/mediawiki/php-1.37.0-wmf.12/includes/parser/ParserOptions.php(1080): ParserOptions->__construct(User, Language)
#10 /srv/mediawiki/php-1.37.0-wmf.12/includes/Storage/DerivedPageDataUpdater.php(817): ParserOptions::newFromUserAndLang(User, Language)
#11 /srv/mediawiki/php-1.37.0-wmf.12/includes/Storage/PageUpdater.php(784): MediaWiki\Storage\DerivedPageDataUpdater->prepareContent(User, MediaWiki\Storage\RevisionSlotsUpdate, boolean)
#12 /srv/mediawiki/php-1.37.0-wmf.12/includes/page/WikiPage.php(2092): MediaWiki\Storage\PageUpdater->saveRevision(CommentStoreComment, integer)
#13 /srv/mediawiki/php-1.37.0-wmf.12/extensions/WikimediaMaintenance/addWiki.php(175): WikiPage->doUserEditContent(WikitextContent, User, CommentStoreComment, integer)
#14 /srv/mediawiki/php-1.37.0-wmf.12/maintenance/doMaintenance.php(108): AddWiki->execute()
#15 /srv/mediawiki/php-1.37.0-wmf.12/extensions/WikimediaMaintenance/addWiki.php(467): require_once(string)
#16 /srv/mediawiki/multiversion/MWScript.php(116): require_once(string)
#17 {main}
Impact

Unknown impact. Currently only one message in a 4-hour window for 1.37.0-wmf.12.

Notes

Pinging @Pchelolo. Could this be related to https://gerrit.wikimedia.org/r/c/mediawiki/extensions/GlobalPreferences/+/667215 ?

Event Timeline

At first glance, this error originates from addWiki maintenance script, so it's definitely not user impacting. It is impacting our ability to run the addWiki maintenance script though.

The cause is probably not the patch referenced in the ticket, but https://gerrit.wikimedia.org/r/c/mediawiki/extensions/WikimediaMaintenance/+/701270

Before this change the main page edit was run under anon user (default $wgUser for maintenance script, 127.0.01), after it's run under a system user account, so user preferences hooks run (didn't run before, anons can't have preferences).

The GlobalPreferences extension redefines preferencesFactory in onMediaWikiServices hook, but somehow in the maintenance script that doesn't persist and a default instance is returned...

At first glance, this error originates from addWiki maintenance script, so it's definitely not user impacting. It is impacting our ability to run the addWiki maintenance script though.

Indeed, it's making wiki creation a bit more difficult that it needs to be :-). I managed to create three wikis successfully by skipping the edits made via script (making them manually instead), but of course I'd prefer just using the script the next time :).

CC @Ladsgroup (who works with me together on creating new wikis).

Boldly triaging as high priority. Should https://gerrit.wikimedia.org/r/c/mediawiki/core/+/702448/ be tagged with this task, @Pchelolo?

Change 702448 had a related patch set uploaded (by Ppchelko; author: Ppchelko):

[mediawiki/core@master] Don't access MWServices prematurely in Maintenence.php

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

Boldly triaging as high priority. Should https://gerrit.wikimedia.org/r/c/mediawiki/core/+/702448/ be tagged with this task, @Pchelolo?

Definitely. I am just not good with numbers. I closed another task as a duplicate of this one and then tagged the patch with a closed task number. Good job, me :)

Change 702448 merged by jenkins-bot:

[mediawiki/core@master] Don't access MWServices prematurely in Maintenence.php

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

Pchelolo claimed this task.

The patch contains confirmation that the issue is fixed on 1.36, so should be fixed with next train. Please reopen if it keep happening