Page MenuHomePhabricator

Creation of dynamic property MediaWiki\Language\Dependency\FileDependency::$filename is deprecated {"exception":"[object] (ErrorException(code: 0)
Closed, ResolvedPublic2 Estimated Story Points

Description

Getting the following error on translatewiki.net where we have FileBasedMessageGroups:

[2026-01-27T03:12:36.105391+00:00] error.WARNING: [c67e90149453ab04d6ab566d] /wiki/Intuition:Monumentsapi-db-field-st_municipality/ml   PHP Deprecated: Creation of dynamic property MediaWiki\Language\Dependency\FileDependency::$timestamp is deprecated {"exception":"[object] (ErrorException(code: 0): PHP Deprecated: Creation of dynamic property MediaWiki\\Language\\Dependency\\FileDependency::$timestamp is deprecated at /srv/mediawiki/tags/2026-01-27_03:11:31/includes/libs/ObjectCache/Utils/MemcachedClient.php:300)
[stacktrace]
#0 [internal function]: MediaWiki\\Exception\\MWExceptionHandler::handleError()
#1 /srv/mediawiki/tags/2026-01-27_03:11:31/includes/libs/ObjectCache/Utils/MemcachedClient.php(300): unserialize()
#2 /srv/mediawiki/tags/2026-01-27_03:11:31/includes/libs/ObjectCache/Utils/MemcachedClient.php(1082): MemcachedClient->unserialize()
#3 /srv/mediawiki/tags/2026-01-27_03:11:31/includes/libs/ObjectCache/Utils/MemcachedClient.php(606): MemcachedClient->_load_items()
#4 /srv/mediawiki/tags/2026-01-27_03:11:31/includes/libs/ObjectCache/MemcachedPhpBagOStuff.php(168): MemcachedClient->get_multi()
#5 /srv/mediawiki/tags/2026-01-27_03:11:31/includes/libs/ObjectCache/MediumSpecificBagOStuff.php(666): Wikimedia\\ObjectCache\\MemcachedPhpBagOStuff->doGetMulti()
#6 /srv/mediawiki/tags/2026-01-27_03:11:31/includes/libs/ObjectCache/WANObjectCache.php(597): Wikimedia\\ObjectCache\\MediumSpecificBagOStuff->getMulti()
#7 /srv/mediawiki/tags/2026-01-27_03:11:31/includes/libs/ObjectCache/WANObjectCache.php(1693): Wikimedia\\ObjectCache\\WANObjectCache->fetchKeys()
#8 /srv/mediawiki/tags/2026-01-27_03:11:31/includes/libs/ObjectCache/WANObjectCache.php(1641): Wikimedia\\ObjectCache\\WANObjectCache->fetchOrRegenerate()
#9 /srv/mediawiki/tags/2026-01-27_03:11:31/extensions/Translate/src/MessageGroupProcessing/CachedMessageGroupFactoryLoader.php(53): Wikimedia\\ObjectCache\\WANObjectCache->getWithSetCallback()
#10 /srv/mediawiki/tags/2026-01-27_03:11:31/extensions/Translate/src/MessageGroupProcessing/CachedMessageGroupFactoryLoader.php(37): MediaWiki\\Extension\\Translate\\MessageGroupProcessing\\CachedMessageGroupFactoryLoader->getCachedValue()
#11 /srv/mediawiki/tags/2026-01-27_03:11:31/extensions/Translate/src/MessageGroupProcessing/MessageGroups.php(55): MediaWiki\\Extension\\Translate\\MessageGroupProcessing\\CachedMessageGroupFactoryLoader->getGroups()
#12 /srv/mediawiki/tags/2026-01-27_03:11:31/extensions/Translate/src/MessageGroupProcessing/MessageGroups.php(393): MediaWiki\\Extension\\Translate\\MessageGroupProcessing\\MessageGroups->init()
#13 /srv/mediawiki/tags/2026-01-27_03:11:31/extensions/Translate/src/MessageGroupProcessing/MessageGroups.php(181): MediaWiki\\Extension\\Translate\\MessageGroupProcessing\\MessageGroups->getGroups()
#14 /srv/mediawiki/tags/2026-01-27_03:11:31/extensions/Translate/src/MessageLoading/MessageHandle.php(142): MediaWiki\\Extension\\Translate\\MessageGroupProcessing\\MessageGroups::getGroup()
#15 /srv/mediawiki/tags/2026-01-27_03:11:31/extensions/Translate/src/MessageLoading/MessageHandle.php(159): MediaWiki\\Extension\\Translate\\MessageLoading\\MessageHandle->getGroup()
#16 /srv/mediawiki/tags/2026-01-27_03:11:31/extensions/Translate/src/TranslatorInterface/LegacyInterfaceHookHandler.php(115): MediaWiki\\Extension\\Translate\\MessageLoading\\MessageHandle->isValid()
#17 /srv/mediawiki/tags/2026-01-27_03:11:31/includes/HookContainer/HookContainer.php(135): MediaWiki\\Extension\\Translate\\TranslatorInterface\\LegacyInterfaceHookHandler->onSidebarBeforeOutput()

I think this is caused due to namespace changes made: 1228558: Language: Namespace dependency classes | https://gerrit.wikimedia.org/r/c/mediawiki/core/+/1228558

We have FileDependency in the cache. Reading https://stackoverflow.com/a/53889543, my understanding is that cached private properties are prefixed with FQCN, and class alias does not resolve them but I'm not sure if that is really the case.

I updated the cache version (https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Translate/+/1233348) and deployed the change but that didn't seem to work well either.

Event Timeline

abi_ triaged this task as Unbreak Now! priority.

Are the warnings coming from other stack traces too?

Is it worth bumping LocalisationCache::VERSION, as that does use FileDependancy too...

One useage in translatewiki config too

https://codesearch.wmcloud.org/search/?q=FileDependency&files=&excludeFiles=&repos=

Are the warnings coming from other stack traces too?

I haven't noticed anything from anywhere else but quite possibly that there will be. The errors from MessageGroup cache causes the entire site to come down, so I haven't been able to test other code paths.

Is it worth bumping LocalisationCache::VERSION, as that does use FileDependancy too...

One useage in translatewiki config too

https://codesearch.wmcloud.org/search/?q=FileDependency&files=&excludeFiles=&repos=

I'll check these but I didn't see errors related to these when I briefly deployed the cache version update for the FileBasedMessageGroups. Still think its worth updating the cache versions wherever possible.

Mentioned in SAL (#wikimedia-operations) [2026-01-27T19:01:40Z] <brennen> 1.46.0-wmf.13 train status (T413804): currently blocked by T415619

I did two things:

  • Marked the properties as public
  • Annotated the class with #[AllowDynamicProperties]

While this stopped the warnings from appearing, it doesn't appear to map the properties to the objects properly. I get the following error:

[2026-01-27T19:05:53.928045+00:00] error.ERROR: [87376532722a976c9faebdd2] /   PHP Warning: foreach() argument must be of type array|object, null given {"exception":"[object] (ErrorException(code: 0): PHP Warning: foreach() argument must be of type array|object, null given at /srv/mediawiki/workdir/includes/Language/Dependency/DependencyWrapper.php:48)
A_smart_kitten subscribed.

For what it's worth, git bisecting locally (for me) also seems to suggest that this is caused by bb14bd0d50d6 / https://gerrit.wikimedia.org/r/c/mediawiki/core/+/1228558 (for T353458). I can reproduce this without any extensions loaded AFAICS.

DependencyWrapper has no cache version, and wraps an array of CacheDependency, which can include FileDependency (among others). Which the CacheDependency implementations provide no apparent versioning either.

I wonder if this is actually a train blocker, as I'm guessing we'd see that beta/the test wikis were broken by it too

I do note similar errors on testwikis. About 700 of these (also some for $name):

Error
  • service.version: 1.46.0-wmf.13
  • timestamp: 2026-01-27T20:24:25.034Z
  • labels.phpversion: 8.3.29
  • trace.id: e7e9276b-04f1-44bd-9c1c-ab234481ee56
  • Find trace.id in Logstash
labels.normalized_message
[{reqId}] {exception_url}   PHP Deprecated: Creation of dynamic property MediaWiki\Language\Dependency\DependencyWrapper::$value is deprecated
FrameLocationCall
from/srv/mediawiki/php-1.46.0-wmf.13/includes/libs/ObjectCache/MemcachedPeclBagOStuff.php(364)
#0[internal function]MediaWiki\Exception\MWExceptionHandler::handleError(int, string, string, int)
#1/srv/mediawiki/php-1.46.0-wmf.13/includes/libs/ObjectCache/MemcachedPeclBagOStuff.php(364)Memcached->getMulti(array)
#2/srv/mediawiki/php-1.46.0-wmf.13/includes/libs/ObjectCache/MediumSpecificBagOStuff.php(666)Wikimedia\ObjectCache\MemcachedPeclBagOStuff->doGetMulti(array, int)
#3/srv/mediawiki/php-1.46.0-wmf.13/includes/libs/ObjectCache/WANObjectCache.php(597)Wikimedia\ObjectCache\MediumSpecificBagOStuff->getMulti(array)
#4/srv/mediawiki/php-1.46.0-wmf.13/includes/libs/ObjectCache/WANObjectCache.php(1693)Wikimedia\ObjectCache\WANObjectCache->fetchKeys(array, array, float, Closure)
#5/srv/mediawiki/php-1.46.0-wmf.13/includes/libs/ObjectCache/WANObjectCache.php(1641)Wikimedia\ObjectCache\WANObjectCache->fetchOrRegenerate(string, int, Closure, array, array)
#6/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupProcessing/CachedMessageGroupFactoryLoader.php(53)Wikimedia\ObjectCache\WANObjectCache->getWithSetCallback(string, int, Closure, array)
#7/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupProcessing/CachedMessageGroupFactoryLoader.php(37)MediaWiki\Extension\Translate\MessageGroupProcessing\CachedMessageGroupFactoryLoader->getCachedValue()
#8/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupProcessing/MessageGroups.php(55)MediaWiki\Extension\Translate\MessageGroupProcessing\CachedMessageGroupFactoryLoader->getGroups()
#9/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupProcessing/MessageGroups.php(393)MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroups->init()
#10/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/Statistics/MessageGroupStats.php(345)MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroups->getGroups()
#11/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/Statistics/MessageGroupStats.php(129)MediaWiki\Extension\Translate\Statistics\MessageGroupStats::forLanguageInternal(string, array, int)
#12/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/Statistics/LanguageStatsSpecialPage.php(199)MediaWiki\Extension\Translate\Statistics\MessageGroupStats::forLanguage(string, int)
#13/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/Statistics/LanguageStatsSpecialPage.php(151)MediaWiki\Extension\Translate\Statistics\LanguageStatsSpecialPage->loadStatistics(string, int)
#14/srv/mediawiki/php-1.46.0-wmf.13/includes/SpecialPage/SpecialPage.php(711)MediaWiki\Extension\Translate\Statistics\LanguageStatsSpecialPage->execute(null)
#15/srv/mediawiki/php-1.46.0-wmf.13/includes/SpecialPage/SpecialPageFactory.php(1747)MediaWiki\SpecialPage\SpecialPage->run(null)
#16/srv/mediawiki/php-1.46.0-wmf.13/includes/Actions/ActionEntryPoint.php(504)MediaWiki\SpecialPage\SpecialPageFactory->executePath(string, MediaWiki\Context\RequestContext)
#17/srv/mediawiki/php-1.46.0-wmf.13/includes/Actions/ActionEntryPoint.php(144)MediaWiki\Actions\ActionEntryPoint->performRequest()
#18/srv/mediawiki/php-1.46.0-wmf.13/includes/MediaWikiEntryPoint.php(180)MediaWiki\Actions\ActionEntryPoint->execute()
#19/srv/mediawiki/php-1.46.0-wmf.13/index.php(44)MediaWiki\MediaWikiEntryPoint->run()
#20/srv/mediawiki/w/index.php(3)require(string)
#21{main}

Change #1233822 had a related patch set uploaded (by Reedy; author: Abijeet Patro):

[mediawiki/extensions/Translate@wmf/1.46.0-wmf.13] FileBasedMessageGroupFactory: Update cache version

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

Are the warnings coming from other stack traces too?

This is a randomly selected stack trace from xdebug locally (without extensions loaded at the time of testing), in case it's useful:

PHP Stack trace:
PHP   1. {main}() /[...]/index.php:0
PHP   2. MediaWiki\MediaWikiEntryPoint->run() /[...]/index.php:44
PHP   3. MediaWiki\Actions\ActionEntryPoint->execute() /[...]/includes/MediaWikiEntryPoint.php:180
PHP   4. MediaWiki\Actions\ActionEntryPoint->performRequest() /[...]/includes/Actions/ActionEntryPoint.php:144
PHP   5. MediaWiki\Actions\ActionEntryPoint->performAction($article = [...]) /[...]/includes/Actions/ActionEntryPoint.php:510
PHP   6. MediaWiki\Actions\ViewAction->show() /[...]/includes/Actions/ActionEntryPoint.php:739
PHP   7. MediaWiki\Page\Article->view() /[...]/includes/Actions/ViewAction.php:71
PHP   8. MediaWiki\Page\Article->showProtectionIndicator() /[...]/includes/Page/Article.php:476
PHP   9. MediaWiki\Title\Title->isMainPage() /[...]/includes/Page/Article.php:595
PHP  10. MediaWiki\Title\Title::newMainPage($localizer = *uninitialized*) /[...]/includes/Title/Title.php:1380
PHP  11. MediaWiki\Message\Message->text() /[...]/includes/Title/Title.php:685
PHP  12. MediaWiki\Message\Message->format($format = 'text') /[...]/includes/Language/Message/Message.php:1136
PHP  13. MediaWiki\Message\Message->fetchMessage() /[...]/includes/Language/Message/Message.php:1034
PHP  14. MediaWiki\Language\MessageCache->get($key = 'mainpage', $useDB = TRUE, $language = 'en', $info = class MediaWiki\Language\MessageInfo { public ?string $usedKey = 'mainpage'; public ?string $langCode = NULL }) /[...]/includes/Language/Message/Message.php:1534
PHP  15. MediaWiki\Language\MessageCache->getMessageFromFallbackChain($code = 'en', $lckey = 'mainpage', $useDB = TRUE, $info = class MediaWiki\Language\MessageInfo { public ?string $usedKey = 'mainpage'; public ?string $langCode = NULL }) /[...]/includes/Language/MessageCache.php:1031
PHP  16. MediaWiki\Language\MessageCache->getMessageForLang($langCode = 'en', $lckey = 'mainpage', $useDB = TRUE, $alreadyTried = [], $info = class MediaWiki\Language\MessageInfo { public ?string $usedKey = 'mainpage'; public ?string $langCode = NULL }) /[...]/includes/Language/MessageCache.php:1138
PHP  17. MediaWiki\Language\MessageCache->getMsgFromNamespace($title = 'Mainpage', $code = 'en') /[...]/includes/Language/MessageCache.php:1165
PHP  18. MediaWiki\Language\MessageCache->isMainCacheable($name = 'Mainpage', $code = 'en') /[...]/includes/Language/MessageCache.php:1299
PHP  19. MediaWiki\Language\LocalisationCache->getSubitem($code = 'en', $key = 'messages', $subkey = 'mainpage') /[...]/includes/Language/MessageCache.php:674
PHP  20. MediaWiki\Language\LocalisationCache->loadSubitem($code = 'en', $key = 'messages', $subkey = 'mainpage') /[...]/includes/Language/LocalisationCache.php:422
PHP  21. MediaWiki\Language\LocalisationCache->initLanguage($langCode = 'en') /[...]/includes/Language/LocalisationCache.php:583
PHP  22. MediaWiki\Language\LocalisationCache->isExpired($code = 'en') /[...]/includes/Language/LocalisationCache.php:673
PHP  23. MediaWiki\Language\LocalisationCache->getFromStore($code = 'en', $key = 'deps') /[...]/includes/Language/LocalisationCache.php:626
PHP  24. MediaWiki\Language\LCStoreDB->get($code = 'en', $key = 'deps') /[...]/includes/Language/LocalisationCache.php:549
PHP  25. unserialize($data = 'a:21:{i:0;O:14:"FileDependency":2:{s:24:"\000FileDependency\000filename";s:108:"/[...]/languages/messages/MessagesEn.php";s:25:"\000FileDependency\000timestamp";i:1769544629;}i:1;O:14:"FileDependency":2:{s:24:"\000FileDependency\000filename";s:101:"/[...]/languages/data/plurals.xml";s:25:"\000FileDependency\000timestamp";i:1761638637;}i:2;O:14:"FileDependency":2:{s:24:"\000FileDependency\000filename";s:'...) /[...]/includes/Language/LCStoreDB.php:60
PHP Deprecated:  Creation of dynamic property MediaWiki\Language\Dependency\ConstantDependency::$name is deprecated in /[...]/includes/Language/LCStoreDB.php on line 60

LocalisationCache::VERSION hasn't been changed in nearly 3 years...

That one wouldn't be seen in WMF production as we use CDB we build per MW version. For example, in the json blob it's using the new NS - "deps":"a:490:{i:0;O:44:\"MediaWiki\\Language\\Dependency\\FileDependency\":2:{s:54:\"\u0000MediaWiki\\Language\\Dependency\\FileDependency\u0000filename\";s:74:

Change #1233822 merged by jenkins-bot:

[mediawiki/extensions/Translate@wmf/1.46.0-wmf.13] FileBasedMessageGroupFactory: Update cache version

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

Mentioned in SAL (#wikimedia-operations) [2026-01-27T21:25:22Z] <cjming@deploy2002> Started scap sync-world: Backport for [[gerrit:1233822|FileBasedMessageGroupFactory: Update cache version (T415619)]]

Mentioned in SAL (#wikimedia-operations) [2026-01-27T21:27:45Z] <cjming@deploy2002> cjming, reedy: Backport for [[gerrit:1233822|FileBasedMessageGroupFactory: Update cache version (T415619)]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes can now be verified there.

Mentioned in SAL (#wikimedia-operations) [2026-01-27T21:33:46Z] <cjming@deploy2002> Finished scap sync-world: Backport for [[gerrit:1233822|FileBasedMessageGroupFactory: Update cache version (T415619)]] (duration: 08m 24s)

Error
  • mwversion: 1.46.0-wmf.13
  • timestamp: 2026-01-27T21:20:55.452Z
  • phpversion: 8.3.29
  • reqId: af5c6004-5deb-4b44-8b8e-efd23a1346e3
  • Find reqId in Logstash
normalized_message
[{reqId}] {exception_url}   PHP Warning: foreach() argument must be of type array|object, null given
FrameLocationCall
from/srv/mediawiki/php-1.46.0-wmf.13/includes/Language/Dependency/DependencyWrapper.php(46)
#0/srv/mediawiki/php-1.46.0-wmf.13/includes/Language/Dependency/DependencyWrapper.php(46)MediaWiki\Exception\MWExceptionHandler::handleError(int, string, string, int)
#1/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupProcessing/CachedMessageGroupFactoryLoader.php(61)MediaWiki\Language\Dependency\DependencyWrapper->isExpired()
#2/srv/mediawiki/php-1.46.0-wmf.13/includes/libs/ObjectCache/WANObjectCache.php(649)MediaWiki\Extension\Translate\MessageGroupProcessing\CachedMessageGroupFactoryLoader::MediaWiki\Extension\Translate\MessageGroupProcessing\{closure}(MediaWiki\Language\Dependency\DependencyWrapper)
#3/srv/mediawiki/php-1.46.0-wmf.13/includes/libs/ObjectCache/WANObjectCache.php(1693)Wikimedia\ObjectCache\WANObjectCache->fetchKeys(array, array, float, Closure)
#4/srv/mediawiki/php-1.46.0-wmf.13/includes/libs/ObjectCache/WANObjectCache.php(1641)Wikimedia\ObjectCache\WANObjectCache->fetchOrRegenerate(string, int, Closure, array, array)
#5/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupProcessing/CachedMessageGroupFactoryLoader.php(53)Wikimedia\ObjectCache\WANObjectCache->getWithSetCallback(string, int, Closure, array)
#6/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupProcessing/CachedMessageGroupFactoryLoader.php(37)MediaWiki\Extension\Translate\MessageGroupProcessing\CachedMessageGroupFactoryLoader->getCachedValue()
#7/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupProcessing/MessageGroups.php(55)MediaWiki\Extension\Translate\MessageGroupProcessing\CachedMessageGroupFactoryLoader->getGroups()
#8/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupProcessing/MessageGroups.php(393)MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroups->init()
#9/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupProcessing/MessageGroups.php(181)MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroups->getGroups()
#10/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/PageTranslation/TranslatablePage.php(189)MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroups::getGroup(string)
#11/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/PageTranslation/Hooks.php(1185)MediaWiki\Extension\Translate\PageTranslation\TranslatablePage->getMessageGroup()
#12/srv/mediawiki/php-1.46.0-wmf.13/includes/HookContainer/HookContainer.php(135)MediaWiki\Extension\Translate\PageTranslation\Hooks::preventDirectEditing(MediaWiki\Title\Title, MediaWiki\User\User, string, string)
#13/srv/mediawiki/php-1.46.0-wmf.13/includes/HookContainer/HookRunner.php(2237)MediaWiki\HookContainer\HookContainer->run(string, array)
#14/srv/mediawiki/php-1.46.0-wmf.13/includes/Permissions/PermissionManager.php(567)MediaWiki\HookContainer\HookRunner->onGetUserPermissionsErrorsExpensive(MediaWiki\Title\Title, MediaWiki\User\User, string, string)
#15/srv/mediawiki/php-1.46.0-wmf.13/includes/Permissions/PermissionManager.php(515)MediaWiki\Permissions\PermissionManager->checkPermissionHooks(string, MediaWiki\User\User, MediaWiki\Permissions\PermissionStatus, string, bool, MediaWiki\Title\Title)
#16/srv/mediawiki/php-1.46.0-wmf.13/includes/EditPage/EditPage.php(931)MediaWiki\Permissions\PermissionManager->getPermissionStatus(string, MediaWiki\User\User, MediaWiki\Title\Title, string)
#17/srv/mediawiki/php-1.46.0-wmf.13/includes/EditPage/EditPage.php(633)MediaWiki\EditPage\EditPage->getEditPermissionStatus(string)
#18/srv/mediawiki/php-1.46.0-wmf.13/includes/Actions/EditAction.php(55)MediaWiki\EditPage\EditPage->edit()
#19/srv/mediawiki/php-1.46.0-wmf.13/includes/Actions/ActionEntryPoint.php(739)MediaWiki\Actions\EditAction->show()
#20/srv/mediawiki/php-1.46.0-wmf.13/includes/Actions/ActionEntryPoint.php(510)MediaWiki\Actions\ActionEntryPoint->performAction(MediaWiki\Page\Article, MediaWiki\Title\Title)
#21/srv/mediawiki/php-1.46.0-wmf.13/includes/Actions/ActionEntryPoint.php(144)MediaWiki\Actions\ActionEntryPoint->performRequest()
#22/srv/mediawiki/php-1.46.0-wmf.13/includes/MediaWikiEntryPoint.php(180)MediaWiki\Actions\ActionEntryPoint->execute()
#23/srv/mediawiki/php-1.46.0-wmf.13/index.php(44)MediaWiki\MediaWikiEntryPoint->run()
#24/srv/mediawiki/w/index.php(3)require(string)
#25{main}
Impact
Notes
Error
  • mwversion: 1.46.0-wmf.13
  • timestamp: 2026-01-27T21:39:22.583Z
  • phpversion: 8.3.29
  • reqId: e2a164b5-8378-46b5-a15f-5be1f1bdbbcf
  • Find reqId in Logstash
normalized_message
[{reqId}] {exception_url}   TypeError: MediaWiki\Extension\Translate\MessageGroupConfiguration\HookDefinedMessageGroupFactory::appendAutoloader(): Argument #1 ($additions) must be of type array, null given, called in /srv/mediawiki/php-1.46.0-wmf.13/exten
FrameLocationCall
from/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupConfiguration/HookDefinedMessageGroupFactory.php(71)
#0/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupConfiguration/HookDefinedMessageGroupFactory.php(60)MediaWiki\Extension\Translate\MessageGroupConfiguration\HookDefinedMessageGroupFactory::appendAutoloader(null, array)
#1/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupProcessing/CachedMessageGroupFactoryLoader.php(37)MediaWiki\Extension\Translate\MessageGroupConfiguration\HookDefinedMessageGroupFactory->createGroups(null)
#2/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupProcessing/MessageGroups.php(55)MediaWiki\Extension\Translate\MessageGroupProcessing\CachedMessageGroupFactoryLoader->getGroups()
#3/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupProcessing/MessageGroups.php(393)MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroups->init()
#4/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/MessageGroupProcessing/MessageGroups.php(181)MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroups->getGroups()
#5/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/PageTranslation/TranslatablePage.php(189)MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroups::getGroup(string)
#6/srv/mediawiki/php-1.46.0-wmf.13/extensions/Translate/src/PageTranslation/Hooks.php(1185)MediaWiki\Extension\Translate\PageTranslation\TranslatablePage->getMessageGroup()
#7/srv/mediawiki/php-1.46.0-wmf.13/includes/HookContainer/HookContainer.php(135)MediaWiki\Extension\Translate\PageTranslation\Hooks::preventDirectEditing(MediaWiki\Title\Title, MediaWiki\User\User, string, string)
#8/srv/mediawiki/php-1.46.0-wmf.13/includes/HookContainer/HookRunner.php(2237)MediaWiki\HookContainer\HookContainer->run(string, array)
#9/srv/mediawiki/php-1.46.0-wmf.13/includes/Permissions/PermissionManager.php(567)MediaWiki\HookContainer\HookRunner->onGetUserPermissionsErrorsExpensive(MediaWiki\Title\Title, MediaWiki\User\User, string, string)
#10/srv/mediawiki/php-1.46.0-wmf.13/includes/Permissions/PermissionManager.php(515)MediaWiki\Permissions\PermissionManager->checkPermissionHooks(string, MediaWiki\User\User, MediaWiki\Permissions\PermissionStatus, string, bool, MediaWiki\Title\Title)
#11/srv/mediawiki/php-1.46.0-wmf.13/includes/EditPage/EditPage.php(931)MediaWiki\Permissions\PermissionManager->getPermissionStatus(string, MediaWiki\User\User, MediaWiki\Title\Title, string)
#12/srv/mediawiki/php-1.46.0-wmf.13/includes/EditPage/EditPage.php(633)MediaWiki\EditPage\EditPage->getEditPermissionStatus(string)
#13/srv/mediawiki/php-1.46.0-wmf.13/includes/Actions/EditAction.php(55)MediaWiki\EditPage\EditPage->edit()
#14/srv/mediawiki/php-1.46.0-wmf.13/includes/Actions/ActionEntryPoint.php(739)MediaWiki\Actions\EditAction->show()
#15/srv/mediawiki/php-1.46.0-wmf.13/includes/Actions/ActionEntryPoint.php(510)MediaWiki\Actions\ActionEntryPoint->performAction(MediaWiki\Page\Article, MediaWiki\Title\Title)
#16/srv/mediawiki/php-1.46.0-wmf.13/includes/Actions/ActionEntryPoint.php(144)MediaWiki\Actions\ActionEntryPoint->performRequest()
#17/srv/mediawiki/php-1.46.0-wmf.13/includes/MediaWikiEntryPoint.php(180)MediaWiki\Actions\ActionEntryPoint->execute()
#18/srv/mediawiki/php-1.46.0-wmf.13/index.php(44)MediaWiki\MediaWikiEntryPoint->run()
#19/srv/mediawiki/w/index.php(3)require(string)
#20{main}
Impact
Notes

After some discussion in #wikimedia-operations and looking at error rates, I'm going to see what this looks like on group0.

After some discussion in #wikimedia-operations and looking at error rates, I'm going to see what this looks like on group0.

The answer here is that this is definitely a blocker.

2026-01-27-15:39:37.png (184×1 px, 59 KB)

Change #1233861 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] Revert "Language: Namespace dependency classes"

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

Change #1233862 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@wmf/1.46.0-wmf.13] Revert "Language: Namespace dependency classes"

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

Change #1233862 merged by jenkins-bot:

[mediawiki/core@wmf/1.46.0-wmf.13] Revert "Language: Namespace dependency classes"

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

Mentioned in SAL (#wikimedia-operations) [2026-01-27T23:38:01Z] <reedy@deploy2002> Started scap sync-world: Backport for [[gerrit:1233860|Updated phpunit/phpunit from 9.6.21 to 9.6.33 (T415723)]], [[gerrit:1233862|Revert "Language: Namespace dependency classes" (T415619)]], [[gerrit:1233858|build: Upgrade PHPUnit from 10.5.59 to 10.5.62 to unblock CI (T415723)]], [[gerrit:1233859|Updated phpunit/phpunit from 9.6.21 to 9.6.33 (T415723)]]

Mentioned in SAL (#wikimedia-operations) [2026-01-28T00:02:33Z] <reedy@deploy2002> jforrester, reedy, zabe: Backport for [[gerrit:1233860|Updated phpunit/phpunit from 9.6.21 to 9.6.33 (T415723)]], [[gerrit:1233862|Revert "Language: Namespace dependency classes" (T415619)]], [[gerrit:1233858|build: Upgrade PHPUnit from 10.5.59 to 10.5.62 to unblock CI (T415723)]], [[gerrit:1233859|Updated phpunit/phpunit from 9.6.21 to 9.6.33 (T415723)]] synced to the testservers (see https://wikite

Mentioned in SAL (#wikimedia-operations) [2026-01-28T00:15:11Z] <reedy@deploy2002> Finished scap sync-world: Backport for [[gerrit:1233860|Updated phpunit/phpunit from 9.6.21 to 9.6.33 (T415723)]], [[gerrit:1233862|Revert "Language: Namespace dependency classes" (T415619)]], [[gerrit:1233858|build: Upgrade PHPUnit from 10.5.59 to 10.5.62 to unblock CI (T415723)]], [[gerrit:1233859|Updated phpunit/phpunit from 9.6.21 to 9.6.33 (T415723)]] (duration: 37m 10s)

Probably related:

Error
  • mwversion: 1.46.0-wmf.12
  • timestamp: 2026-01-28T00:21:09.697Z
  • phpversion: 8.3.29
  • reqId: 4269d1b8-eac4-4fb5-b5f1-29cdc1968c7d
  • Find reqId in Logstash
normalized_message
[{reqId}] {exception_url}   TypeError: MediaWiki\Extension\Translate\MessageGroupProcessing\CachedMessageGroupFactoryLoader::MediaWiki\Extension\Translate\MessageGroupProcessing\{closure}(): Argument #1 ($value) must be of type DependencyWrapper, __PHP_Incomplete_Class given, called in /srv/mediawiki/php-1.46.0-wmf.12/includes/libs/ObjectCache/WANObjectCache.php on line 649
FrameLocationCall
from/srv/mediawiki/php-1.46.0-wmf.12/extensions/Translate/src/MessageGroupProcessing/CachedMessageGroupFactoryLoader.php(61)
#0/srv/mediawiki/php-1.46.0-wmf.12/includes/libs/ObjectCache/WANObjectCache.php(649)MediaWiki\Extension\Translate\MessageGroupProcessing\CachedMessageGroupFactoryLoader::MediaWiki\Extension\Translate\MessageGroupProcessing\{closure}(__PHP_Incomplete_Class)
#1/srv/mediawiki/php-1.46.0-wmf.12/includes/libs/ObjectCache/WANObjectCache.php(1693)Wikimedia\ObjectCache\WANObjectCache->fetchKeys(array, array, float, Closure)
#2/srv/mediawiki/php-1.46.0-wmf.12/includes/libs/ObjectCache/WANObjectCache.php(1641)Wikimedia\ObjectCache\WANObjectCache->fetchOrRegenerate(string, int, Closure, array, array)
#3/srv/mediawiki/php-1.46.0-wmf.12/extensions/Translate/src/MessageGroupProcessing/CachedMessageGroupFactoryLoader.php(53)Wikimedia\ObjectCache\WANObjectCache->getWithSetCallback(string, int, Closure, array)
#4/srv/mediawiki/php-1.46.0-wmf.12/extensions/Translate/src/MessageGroupProcessing/CachedMessageGroupFactoryLoader.php(37)MediaWiki\Extension\Translate\MessageGroupProcessing\CachedMessageGroupFactoryLoader->getCachedValue()
#5/srv/mediawiki/php-1.46.0-wmf.12/extensions/Translate/src/MessageGroupProcessing/MessageGroups.php(55)MediaWiki\Extension\Translate\MessageGroupProcessing\CachedMessageGroupFactoryLoader->getGroups()
#6/srv/mediawiki/php-1.46.0-wmf.12/extensions/Translate/src/MessageGroupProcessing/MessageGroups.php(393)MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroups->init()
#7/srv/mediawiki/php-1.46.0-wmf.12/extensions/Translate/src/MessageGroupProcessing/MessageGroups.php(181)MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroups->getGroups()
#8/srv/mediawiki/php-1.46.0-wmf.12/extensions/Translate/src/PageTranslation/TranslatablePage.php(189)MediaWiki\Extension\Translate\MessageGroupProcessing\MessageGroups::getGroup(string)
#9/srv/mediawiki/php-1.46.0-wmf.12/extensions/Translate/src/PageTranslation/TranslatablePage.php(351)MediaWiki\Extension\Translate\PageTranslation\TranslatablePage->getMessageGroup()
#10/srv/mediawiki/php-1.46.0-wmf.12/extensions/Translate/src/PageTranslation/Hooks.php(663)MediaWiki\Extension\Translate\PageTranslation\TranslatablePage->getTranslationPercentages()
#11/srv/mediawiki/php-1.46.0-wmf.12/extensions/Translate/src/PageTranslation/Hooks.php(496)MediaWiki\Extension\Translate\PageTranslation\Hooks::getTranslatablePageStatus(MediaWiki\Title\Title)
#12/srv/mediawiki/php-1.46.0-wmf.12/includes/Parser/Parser.php(4004)MediaWiki\Extension\Translate\PageTranslation\Hooks::languages(null, array, MediaWiki\Parser\Parser, MediaWiki\Parser\PPFrame_Hash)
#13/srv/mediawiki/php-1.46.0-wmf.12/includes/Parser/PPFrame_Hash.php(344)MediaWiki\Parser\Parser->extensionSubstitution(array, MediaWiki\Parser\PPFrame_Hash, bool)
#14/srv/mediawiki/php-1.46.0-wmf.12/includes/Parser/Parser.php(2895)MediaWiki\Parser\PPFrame_Hash->expand(MediaWiki\Parser\PPNode_Hash_Tree, int)
#15/srv/mediawiki/php-1.46.0-wmf.12/includes/Parser/Parser.php(1537)MediaWiki\Parser\Parser->replaceVariables(string)
#16/srv/mediawiki/php-1.46.0-wmf.12/includes/Parser/Parser.php(624)MediaWiki\Parser\Parser->internalParse(string)
#17/srv/mediawiki/php-1.46.0-wmf.12/includes/Content/WikitextContentHandler.php(375)MediaWiki\Parser\Parser->parse(string, MediaWiki\Title\Title, MediaWiki\Parser\ParserOptions, bool, bool, int)
#18/srv/mediawiki/php-1.46.0-wmf.12/includes/Content/ContentHandler.php(1574)MediaWiki\Content\WikitextContentHandler->fillParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams, MediaWiki\Parser\ParserOutput)
#19/srv/mediawiki/php-1.46.0-wmf.12/includes/Content/Renderer/ContentRenderer.php(67)MediaWiki\Content\ContentHandler->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Content\Renderer\ContentParseParams)
#20/srv/mediawiki/php-1.46.0-wmf.12/includes/Revision/RenderedRevision.php(246)MediaWiki\Content\Renderer\ContentRenderer->getParserOutput(MediaWiki\Content\WikitextContent, MediaWiki\Page\PageIdentityValue, MediaWiki\Revision\RevisionStoreCacheRecord, MediaWiki\Parser\ParserOptions, array)
#21/srv/mediawiki/php-1.46.0-wmf.12/includes/Revision/RenderedRevision.php(219)MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(MediaWiki\Content\WikitextContent, array)
#22/srv/mediawiki/php-1.46.0-wmf.12/includes/Revision/RevisionRenderer.php(225)MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string, array)
#23/srv/mediawiki/php-1.46.0-wmf.12/includes/Revision/RevisionRenderer.php(158)MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, MediaWiki\Parser\ParserOptions, array)
#24/srv/mediawiki/php-1.46.0-wmf.12/includes/Revision/RenderedRevision.php(182)MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#25/srv/mediawiki/php-1.46.0-wmf.12/includes/Page/ParserOutputAccess.php(590)MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#26/srv/mediawiki/php-1.46.0-wmf.12/includes/Page/ParserOutputAccess.php(681)MediaWiki\Page\ParserOutputAccess->renderRevision(MediaWiki\Page\WikiPage, MediaWiki\Parser\ParserOptions, MediaWiki\Revision\RevisionStoreCacheRecord, array)
#27/srv/mediawiki/php-1.46.0-wmf.12/includes/PoolCounter/PoolCounterWorkViaCallback.php(68)MediaWiki\Page\ParserOutputAccess->MediaWiki\Page\{closure}()
#28/srv/mediawiki/php-1.46.0-wmf.12/includes/PoolCounter/PoolCounterWork.php(159)MediaWiki\PoolCounter\PoolCounterWorkViaCallback->doWork()
#29/srv/mediawiki/php-1.46.0-wmf.12/includes/Page/ParserOutputAccess.php(495)MediaWiki\PoolCounter\PoolCounterWork->execute()
#30/srv/mediawiki/php-1.46.0-wmf.12/includes/Page/Article.php(864)MediaWiki\Page\ParserOutputAccess->getParserOutput(MediaWiki\Page\WikiPage, MediaWiki\Parser\ParserOptions, MediaWiki\Revision\RevisionStoreCacheRecord, array)
#31/srv/mediawiki/php-1.46.0-wmf.12/includes/Page/Article.php(535)MediaWiki\Page\Article->generateContentOutput(MediaWiki\User\User, MediaWiki\Parser\ParserOptions, int, MediaWiki\Output\OutputPage, array)
#32/srv/mediawiki/php-1.46.0-wmf.12/includes/Actions/ViewAction.php(71)MediaWiki\Page\Article->view()
#33/srv/mediawiki/php-1.46.0-wmf.12/includes/Actions/ActionEntryPoint.php(739)MediaWiki\Actions\ViewAction->show()
#34/srv/mediawiki/php-1.46.0-wmf.12/includes/Actions/ActionEntryPoint.php(510)MediaWiki\Actions\ActionEntryPoint->performAction(MediaWiki\Page\Article, MediaWiki\Title\Title)
#35/srv/mediawiki/php-1.46.0-wmf.12/includes/Actions/ActionEntryPoint.php(144)MediaWiki\Actions\ActionEntryPoint->performRequest()
#36/srv/mediawiki/php-1.46.0-wmf.12/includes/MediaWikiEntryPoint.php(181)MediaWiki\Actions\ActionEntryPoint->execute()
#37/srv/mediawiki/php-1.46.0-wmf.12/index.php(44)MediaWiki\MediaWikiEntryPoint->run()
#38/srv/mediawiki/w/index.php(3)require(string)
#39{main}

Change #1233861 merged by jenkins-bot:

[mediawiki/core@master] Revert "Language: Namespace dependency classes"

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

After deploying the revert, I had to restart memcache to stop the TypeErrors. Without it I was getting the error highlighted by @Catrope in https://phabricator.wikimedia.org/T415619#11560759

Nikerabbit claimed this task.