Page MenuHomePhabricator

JobQueueGroup::singleton() is difficult to use with dependency injection
Closed, ResolvedPublic

Description

Problem
The JobQueueGroup class can only be created through the JobQueueGroup::singleton() factory method. Services which need to enqueue jobs therefore rely on MediaWiki global state in their service wiring – a dependency that can’t be mocked away.

Proposed Solution
Create a new service that will replace JobQueueGroup::singleton(), e.g. named JobQueueGroupFactory. By making it part of the service container, the JobQueueGroup::destroySingletons() method should also become unnecessary (the singletons would be destroyed with all other services).

Event Timeline

Change 673531 had a related patch set uploaded (by Mainframe98; owner: Mainframe98):
[mediawiki/core@master] Add a JobQueueGroupFactory service

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

Change 673531 merged by jenkins-bot:

[mediawiki/core@master] Add a JobQueueGroupFactory service

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

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

[mediawiki/core@master] Fix method name in deprecation notice

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

Change 701061 merged by jenkins-bot:

[mediawiki/core@master] JobQueueGroup: Fix method name in deprecation notice

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

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

[mediawiki/core@master] Convert JobQueueGroup into a service and use DI

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

Change 570786 abandoned by Krinkle:

[mediawiki/core@master] Convert JobQueueGroup into a service and use DI

Reason:

Superseded

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

Change 520954 had a related patch set uploaded (by Krinkle; author: Aaron Schulz):

[mediawiki/core@master] Convert DeferredUpdates and JobQueueGroup to services

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

Change 520954 abandoned by Aaron Schulz:

[mediawiki/core@master] Convert DeferredUpdates and JobQueueGroup to services

Reason:

obsolete; can be linked as a reference

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