Page MenuHomePhabricator

PHP Deprecated: Accessing $wgHooks directly is deprecated, use HookContainer::getHandlers() or HookContainer::register() instead. [Called from {closure}]
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
labels.normalized_message
[{reqId}] {exception_url}   PHP Deprecated: Accessing $wgHooks directly is deprecated, use HookContainer::getHandlers() or HookContainer::register() instead. [Called from {closure}]
error.stack_trace
from /srv/mediawiki/wmf-config/CommonSettings.php(2824)
#0 [internal function]: MWExceptionHandler::handleError(integer, string, string, string, array)
#1 /srv/mediawiki/php-1.41.0-wmf.3/includes/debug/MWDebug.php(382): trigger_error(string, integer)
#2 /srv/mediawiki/php-1.41.0-wmf.3/includes/debug/MWDebug.php(353): MWDebug::sendRawDeprecated(string, boolean, string)
#3 /srv/mediawiki/php-1.41.0-wmf.3/includes/GlobalFunctions.php(792): MWDebug::deprecatedMsg(string, string, string, integer)
#4 /srv/mediawiki/php-1.41.0-wmf.3/includes/HookContainer/FauxGlobalHookArray.php(49): wfDeprecatedMsg(string, string)
#5 /srv/mediawiki/wmf-config/CommonSettings.php(2824): MediaWiki\HookContainer\FauxGlobalHookArray->offsetGet(string)
#6 /srv/mediawiki/php-1.41.0-wmf.3/includes/HookContainer/HookContainer.php(338): {closure}(MobileContext)
#7 /srv/mediawiki/php-1.41.0-wmf.3/includes/HookContainer/HookContainer.php(137): MediaWiki\HookContainer\HookContainer->callLegacyHook(string, array, array, array)
#8 /srv/mediawiki/php-1.41.0-wmf.3/extensions/MobileFrontend/includes/MobileContext.php(302): MediaWiki\HookContainer\HookContainer->run(string, array)
#9 /srv/mediawiki/php-1.41.0-wmf.3/extensions/MobileFrontend/includes/MobileFrontendHooks.php(146): MobileContext->shouldDisplayMobileView()
#10 /srv/mediawiki/php-1.41.0-wmf.3/includes/HookContainer/HookContainer.php(338): MobileFrontendHooks::onBeforeInitialize(MediaWiki\Title\Title, NULL, OutputPage, User, WebRequest, MediaWiki)
#11 /srv/mediawiki/php-1.41.0-wmf.3/includes/HookContainer/HookContainer.php(137): MediaWiki\HookContainer\HookContainer->callLegacyHook(string, array, array, array)
#12 /srv/mediawiki/php-1.41.0-wmf.3/includes/HookContainer/HookRunner.php(934): MediaWiki\HookContainer\HookContainer->run(string, array)
#13 /srv/mediawiki/php-1.41.0-wmf.3/includes/MediaWiki.php(208): MediaWiki\HookContainer\HookRunner->onBeforeInitialize(MediaWiki\Title\Title, NULL, OutputPage, User, WebRequest, MediaWiki)
#14 /srv/mediawiki/php-1.41.0-wmf.3/includes/MediaWiki.php(926): MediaWiki->performRequest()
#15 /srv/mediawiki/php-1.41.0-wmf.3/includes/MediaWiki.php(579): MediaWiki->main()
#16 /srv/mediawiki/php-1.41.0-wmf.3/index.php(50): MediaWiki->run()
#17 /srv/mediawiki/php-1.41.0-wmf.3/index.php(46): wfIndexMain()
#18 /srv/mediawiki/w/index.php(3): require(string)
#19 {main}
Impact

This cause massive log spam after I have promoted 1.41.0-wmf.3 to group0 wikis (T330209).

Notes

Most probably caused by $wgHooks triggering a deprecation warning which is for T331602: Make $wgHooks a regular configuration variable and I guess has for root cause mediawiki/core: Make $wgHooks trigger deprecation warnings.

Event Timeline

hashar triaged this task as Unbreak Now! priority.

I suspect it’s this code in production config (so no wonder it wasn’t found in MF CI):

$wgHooks['EnterMobileMode'][] = static function () {
	global $wgCentralAuthCookieDomain, $wgHooks, $wgIncludeLegacyJavaScript;
	// ...
	// Better hack for T49647
	$wgHooks['WebResponseSetCookie'][] = static function ( &$name, &$value, &$expire, &$options ) {
		if ( isset( $options['domain'] ) ) {
			if ( $options['domain'] == 'commons.wikimedia.org' ) {
				$options['domain'] = 'commons.m.wikimedia.org';
			} elseif ( $options['domain'] == 'meta.wikimedia.org' ) {
				$options['domain'] = 'meta.m.wikimedia.org';
			}
		}
	};
	return true;
};

The outer $wgHooks assignment is probably fine, but the inner one needs to be updated.

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

[operations/mediawiki-config@master] Use HookContainer to register hooks inside hooks

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

Change 905598 merged by jenkins-bot:

[operations/mediawiki-config@master] Use HookContainer to register hooks inside hooks

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

Mentioned in SAL (#wikimedia-operations) [2023-04-04T14:04:15Z] <lucaswerkmeister-wmde@deploy2002> Started scap: Backport for [[gerrit:905598|Use HookContainer to register hooks inside hooks (T333926)]]

Mentioned in SAL (#wikimedia-operations) [2023-04-04T14:05:50Z] <lucaswerkmeister-wmde@deploy2002> lucaswerkmeister-wmde: Backport for [[gerrit:905598|Use HookContainer to register hooks inside hooks (T333926)]] synced to the testservers: mwdebug2002.codfw.wmnet, mwdebug2001.codfw.wmnet, mwdebug1002.eqiad.wmnet, mwdebug1001.eqiad.wmnet

Mentioned in SAL (#wikimedia-operations) [2023-04-04T14:15:06Z] <lucaswerkmeister-wmde@deploy2002> Finished scap: Backport for [[gerrit:905598|Use HookContainer to register hooks inside hooks (T333926)]] (duration: 10m 50s)

Lucas_Werkmeister_WMDE lowered the priority of this task from Unbreak Now! to High.Apr 4 2023, 2:27 PM

Looks like that worked, I don’t see any new $wgHooks errors in logstash after that deployment. (There were still some errors coming in, despite the general group0 rollback, from test wikis which stayed on wmf.3.)

Downgrading priority; @hashar can close the task if the train successfully moves forward again and the errors don’t reappear, I’d say.

Thank you very much @Lucas_Werkmeister_WMDE , I will mark this task resolved once I update group 0 wikis indeed ;)

The error is indeed no more showing even after promoting group 1 wikis to 1.41.0-wmf.3.

Danke Schon @Lucas_Werkmeister_WMDE

I suspect it’s this code in production config (so no wonder it wasn’t found in MF CI):

Ugh. We really nede to move all that secret sauce out of the config repo. Or run tests for it in core CI. Of course, we don't havew tests for it...

Change 907933 had a related patch set uploaded (by Jforrester; author: Jforrester):

[operations/mediawiki-config@master] [Beta Cluster] Replicate WebResponseSetCookie wgHooks migration here too

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

Change 907933 merged by jenkins-bot:

[operations/mediawiki-config@master] [Beta Cluster] Replicate WebResponseSetCookie wgHooks migration here too

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

Mentioned in SAL (#wikimedia-operations) [2023-04-12T08:17:37Z] <hashar@deploy2002> Synchronized wmf-config/CommonSettings-labs.php: [Beta Cluster] Replicate WebResponseSetCookie wgHooks migration here too - T333926 (duration: 05m 51s)

[ZD0uN2nU8NOZe9wZRZcK4QAAAEE] /w/index.php?action=edit&title=Polish_People%27s_Republic Error: Class 'MediaWikiServices' not found

Backtrace:

from /srv/mediawiki/wmf-config/CommonSettings-labs.php(98)
#0 /srv/mediawiki/php-master/includes/HookContainer/HookContainer.php(338): {closure}(MobileContext)
#1 /srv/mediawiki/php-master/includes/HookContainer/HookContainer.php(137): MediaWiki\HookContainer\HookContainer->callLegacyHook(string, array, array, array)
#2 /srv/mediawiki/php-master/extensions/MobileFrontend/includes/MobileContext.php(302): MediaWiki\HookContainer\HookContainer->run(string, array)
#3 /srv/mediawiki/php-master/extensions/MobileFrontend/includes/MobileFrontendHooks.php(146): MobileContext->shouldDisplayMobileView()
#4 /srv/mediawiki/php-master/includes/HookContainer/HookContainer.php(338): MobileFrontendHooks::onBeforeInitialize(MediaWiki\Title\Title, NULL, OutputPage, User, WebRequest, MediaWiki)
#5 /srv/mediawiki/php-master/includes/HookContainer/HookContainer.php(137): MediaWiki\HookContainer\HookContainer->callLegacyHook(string, array, array, array)
#6 /srv/mediawiki/php-master/includes/HookContainer/HookRunner.php(934): MediaWiki\HookContainer\HookContainer->run(string, array)
#7 /srv/mediawiki/php-master/includes/MediaWiki.php(208): MediaWiki\HookContainer\HookRunner->onBeforeInitialize(MediaWiki\Title\Title, NULL, OutputPage, User, WebRequest, MediaWiki)
#8 /srv/mediawiki/php-master/includes/MediaWiki.php(926): MediaWiki->performRequest()
#9 /srv/mediawiki/php-master/includes/MediaWiki.php(579): MediaWiki->main()
#10 /srv/mediawiki/php-master/index.php(50): MediaWiki->run()
#11 /srv/mediawiki/php-master/index.php(46): wfIndexMain()
#12 /srv/mediawiki/w/index.php(3): require(string)
#13 {main}

Change 908877 had a related patch set uploaded (by Func; author: Func):

[operations/mediawiki-config@master] CommonSettings-labs: Add use statement for MediaWikiServices

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

Change 908877 merged by jenkins-bot:

[operations/mediawiki-config@master] CommonSettings-labs: Add use statement for MediaWikiServices

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