From: Ori Livneh Date: Mon, 26 Oct 2015 18:23:43 +0000 (-0700) Subject: resourceloader: Deduplicate module registration conflicts X-Git-Tag: 1.31.0-rc.0~9237 X-Git-Url: http://git.cyclocoop.org//%27%40script%40/%27?a=commitdiff_plain;h=b1ea0612f8beec5af1142da5b8075ab3427efa4c;p=lhc%2Fweb%2Fwiklou.git resourceloader: Deduplicate module registration conflicts If an attempt is made to register a ResourceLoader module which has already been registered, instead of bailing with an error, issue a warning instead, and allow the lattermost set of module parameters to stick. Because modules are registered from extensions, and because modules are often migrated from one extension to another as extensions are refactored, and because the developers of different extensions are not always aware of each other's work, throwing an error runs a high risk of causing an outage. Bug: T116628 Change-Id: Ie3499d9f2ff3bf071f1c2b0176e19440ff55211c --- diff --git a/includes/resourceloader/ResourceLoader.php b/includes/resourceloader/ResourceLoader.php index c9c60bc844..dfd9a8ffe7 100644 --- a/includes/resourceloader/ResourceLoader.php +++ b/includes/resourceloader/ResourceLoader.php @@ -322,13 +322,15 @@ class ResourceLoader implements LoggerAwareInterface { // Allow multiple modules to be registered in one call $registrations = is_array( $name ) ? $name : array( $name => $info ); foreach ( $registrations as $name => $info ) { - // Disallow duplicate registrations + // Warn on duplicate registrations if ( isset( $this->moduleInfos[$name] ) ) { // A module has already been registered by this name - throw new MWException( - 'ResourceLoader duplicate registration error. ' . - 'Another module has already been registered as ' . $name - ); + if ( $this->moduleInfos[$name] === $info ) { + $this->logger->warning( + 'ResourceLoader duplicate registration warning. ' . + 'Another module has already been registered as ' . $name + ); + } } // Check $name for validity