Steps to replicate the issue (include links if applicable):
- Translate an item of a translatable page (or create any kind of job that uses importScopedSession)
- Execute job queue with --procs=2 (or higher)
What happens?:
2025-09-24 08:21:01 dev.translatewiki.net wiki: [c595566c8593a81ae87b3c87] [no req] Wikimedia\Services\ContainerDisabledException: Container disabled!
#0 /srv/mediawiki/workdir/includes/MediaWikiServices.php(381): Wikimedia\Services\ServiceContainer->getService()
#1 /srv/mediawiki/workdir/vendor/wikimedia/services/src/ServiceContainer.php(414): MediaWiki\MediaWikiServices->getService()
#2 /srv/mediawiki/workdir/vendor/wikimedia/object-factory/src/ObjectFactory.php(204): Wikimedia\Services\ServiceContainer->get()
#3 /srv/mediawiki/workdir/vendor/wikimedia/object-factory/src/ObjectFactory.php(149): Wikimedia\ObjectFactory\ObjectFactory::getObjectFromSpec()
#4 /srv/mediawiki/workdir/includes/session/SessionManager.php(515): Wikimedia\ObjectFactory\ObjectFactory->createObject()
#5 /srv/mediawiki/workdir/includes/session/SessionManager.php(547): MediaWiki\Session\SessionManager->getProviders()
#6 /srv/mediawiki/workdir/includes/session/SessionManager.php(716): MediaWiki\Session\SessionManager->getProvider()
#7 /srv/mediawiki/workdir/includes/session/SessionManager.php(180): MediaWiki\Session\SessionManager->loadSessionInfoFromStore()
#8 /srv/mediawiki/workdir/includes/session/PHPSessionHandler.php(216): MediaWiki\Session\SessionManager->getSessionById()
#9 [internal function]: MediaWiki\Session\PHPSessionHandler->read()
#10 /srv/mediawiki/workdir/vendor/wikimedia/at-ease/src/AtEase.php(88): session_start()
#11 /srv/mediawiki/workdir/includes/context/RequestContext.php(737): Wikimedia\AtEase\AtEase::quietCall()
#12 /srv/mediawiki/workdir/includes/context/RequestContext.php(754): MediaWiki\Context\RequestContext::MediaWiki\Context\{closure}()
#13 /srv/mediawiki/workdir/extensions/Translate/src/PageTranslation/RenderTranslationPageJob.php(87): MediaWiki\Context\RequestContext::importScopedSession()
#14 /srv/mediawiki/workdir/includes/jobqueue/JobRunner.php(381): MediaWiki\Extension\Translate\PageTranslation\RenderTranslationPageJob->run()
#15 /srv/mediawiki/workdir/includes/jobqueue/JobRunner.php(339): MediaWiki\JobQueue\JobRunner->doExecuteJob()
#16 /srv/mediawiki/workdir/includes/jobqueue/JobRunner.php(234): MediaWiki\JobQueue\JobRunner->executeJob()
#17 /srv/mediawiki/workdir/maintenance/runJobs.php(107): MediaWiki\JobQueue\JobRunner->run()
#18 /srv/mediawiki/workdir/maintenance/includes/MaintenanceRunner.php(696): RunJobs->execute()
#19 /srv/mediawiki/workdir/maintenance/run.php(53): MediaWiki\Maintenance\MaintenanceRunner->run()
#20 /srv/mediawiki/workdir/maintenance/run(3): require(string)
#21 {main}What should have happened instead?:
No exception.
Software version (on Special:Version page; skip for WMF-hosted wikis like Wikipedia):
Other information (browser name/version, screenshots, etc.):
Container disabled! exception appears because --procs parameter causes forking using ForkController, which calls \MediaWiki\Maintenance\ForkController::prepareEnvironment, which resets service container.
This is a problem because SessionManager(537) hold a reference to ObjectFactory that is now disabled.