Page MenuHomePhabricator

Container disabled! (JobQueue/MessageUpdateJob/PageUpdater/WikitextContentHandler/Parser/MWTimestamp/Message)
Open, Needs TriagePublic

Description

[2022-04-22T11:19:16.376639+00:00] exception.ERROR: [ad3e49eb138ef3264cfc4bb4] [no req]   Wikimedia\Services\ContainerDisabledException: Container disabled! {"exception":"[object] (Wikimedia\\Services\\ContainerDisabledException(code: 0): Container disabled! at /srv/mediawiki/tags/2022-04-20_13:51:23/vendor/wikimedia/services/src/ServiceContainer.php:408)
[stacktrace]
#0 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/MediaWikiServices.php(301): Wikimedia\\Services\\ServiceContainer->getService()
#1 /srv/mediawiki/tags/2022-04-20_13:51:23/vendor/wikimedia/services/src/ServiceContainer.php(424): MediaWiki\\MediaWikiServices->getService()
#2 /srv/mediawiki/tags/2022-04-20_13:51:23/vendor/wikimedia/object-factory/src/ObjectFactory.php(211): Wikimedia\\Services\\ServiceContainer->get()
#3 /srv/mediawiki/tags/2022-04-20_13:51:23/vendor/wikimedia/object-factory/src/ObjectFactory.php(152): Wikimedia\\ObjectFactory\\ObjectFactory::getObjectFromSpec()
#4 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/session/SessionManager.php(471): Wikimedia\\ObjectFactory\\ObjectFactory->createObject()
#5 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/session/SessionManager.php(530): MediaWiki\\Session\\SessionManager->getProviders()
#6 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/session/SessionManager.php(253): MediaWiki\\Session\\SessionManager->getSessionInfoForRequest()
#7 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/WebRequest.php(842): MediaWiki\\Session\\SessionManager->getSessionForRequest()
#8 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/user/User.php(1116): WebRequest->getSession()
#9 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/user/User.php(439): User->loadFromSession()
#10 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/user/User.php(1903): User->load()
#11 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/user/User.php(2548): User->getId()
#12 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/user/UserOptionsManager.php(644): User->isRegistered()
#13 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/user/UserOptionsManager.php(496): MediaWiki\\User\\UserOptionsManager->getCacheKey()
#14 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/user/UserOptionsManager.php(147): MediaWiki\\User\\UserOptionsManager->loadUserOptions()
#15 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/user/User.php(2370): MediaWiki\\User\\UserOptionsManager->getOption()
#16 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/context/RequestContext.php(451): User->getOption()
#17 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/language/Message.php(384): RequestContext->getLanguage()
#18 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/language/Message.php(1491): Message->getLanguage()
#19 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/language/Message.php(1116): Message->fetchMessage()
#20 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/MWTimestamp.php(160): Message->exists()
#21 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/parser/Parser.php(4616): MWTimestamp->getTimezoneMessage()
#22 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/parser/Parser.php(4587): Parser->pstPass2()
#23 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/content/WikitextContentHandler.php(220): Parser->preSaveTransform()
#24 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/content/Transform/ContentTransformer.php(46): WikitextContentHandler->preSaveTransform()
#25 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/Storage/DerivedPageDataUpdater.php(914): MediaWiki\\Content\\Transform\\ContentTransformer->preSaveTransform()
#26 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/Storage/PageUpdater.php(319): MediaWiki\\Storage\\DerivedPageDataUpdater->prepareContent()
#27 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/Storage/PageUpdater.php(860): MediaWiki\\Storage\\PageUpdater->prepareUpdate()
#28 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/page/WikiPage.php(1997): MediaWiki\\Storage\\PageUpdater->saveRevision()
#29 /srv/mediawiki/tags/2022-04-20_13:51:23/extensions/Translate/utils/MessageUpdateJob.php(115): WikiPage->doUserEditContent()
#30 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/jobqueue/JobRunner.php(383): MessageUpdateJob->run()
#31 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/jobqueue/JobRunner.php(344): JobRunner->doExecuteJob()
#32 /srv/mediawiki/tags/2022-04-20_13:51:23/includes/jobqueue/JobRunner.php(248): JobRunner->executeJob()
#33 /srv/mediawiki/tags/2022-04-20_13:51:23/maintenance/runJobs.php(98): JobRunner->run()
#34 /srv/mediawiki/tags/2022-04-20_13:51:23/maintenance/doMaintenance.php(122): RunJobs->execute()
#35 /srv/mediawiki/tags/2022-04-20_13:51:23/maintenance/runJobs.php(136): require_once('/srv/mediawiki/...')
#36 {main}
","exception_url":"[no req]","reqId":"ad3e49eb138ef3264cfc4bb4","caught_by":"other"} []

Event Timeline

The service container can be destroyed by MediaWikiServices::resetChildProcessServices() which is used by ForkContoller in the core and the Translate extension.
It turns out that storing a service container instance or using closure to avoid circular dependency in ServiceWiring is not a good practice.

SessionManager singleton stored an outdated ObjectFactory instance.

SessionManager singleton stored an outdated ObjectFactory instance.

That would happen if somethign access the SessionManager prematurely, before mediaWiki is fully initialized.