MWServices load new ServiceWiringFiles after ExtRegistry load
authoraddshore <addshorewiki@gmail.com>
Tue, 18 Oct 2016 10:41:59 +0000 (11:41 +0100)
committerAaron Schulz <aschulz@wikimedia.org>
Tue, 18 Oct 2016 18:01:56 +0000 (18:01 +0000)
Extensions that include ServiceWiringFiles in their
extension.json file do not currently get loaded.
This is due to the resetGlobalInstance call after
the extension.json files are loaded not reloading
service wiring.

Adding the 'load' param resolves this.

The current sequence of events is as follows:
 - Setup.php
 - ExtensionRegistry::loadFromQueue
 - ExtensionRegistry::exportExtractedData
 - MediawikiServices::resetGlobalInstance

This can be tested using the Cognate extension
(linked in the ticket) which may be the first extension
to use both extension registration while including
service wiring files.

Bug: T148419
Change-Id: Ic42ac8e28c66b79193bcafe332b1ef2ebc29742d

includes/MediaWikiServices.php

index 7f94ced..3a95676 100644 (file)
@@ -182,7 +182,7 @@ class MediaWikiServices extends ServiceContainer {
 
                $oldInstance = self::$instance;
 
-               self::$instance = self::newInstance( $bootstrapConfig );
+               self::$instance = self::newInstance( $bootstrapConfig, 'load' );
                self::$instance->importWiring( $oldInstance, [ 'BootstrapConfig' ] );
 
                if ( $quick === 'quick' ) {