Page MenuHomePhabricator

Some special pages (such as search) throw exceptions on beta
Closed, ResolvedPublicBUG REPORT

Description

E.g. https://cs.wikipedia.beta.wmflabs.org/wiki/Speci%C3%A1ln%C3%AD:Homepage/newcomertask/2545

[Yhhdwm3rnFbAseQZCQ066gAAAE0] /wiki/Speci%C3%A1ln%C3%AD:Homepage/newcomertask/2545 TypeError: Argument 1 passed to MediaWiki\Languages\LanguageConverterFactory::instantiateConverter() must be an instance of Language, instance of StubUserLang given, called in /srv/mediawiki/php-master/includes/language/LanguageConverterFactory.php on line 179

Backtrace:

from /srv/mediawiki/php-master/includes/language/LanguageConverterFactory.php(151)
#0 /srv/mediawiki/php-master/includes/language/LanguageConverterFactory.php(179): MediaWiki\Languages\LanguageConverterFactory->instantiateConverter(StubUserLang)
#1 /srv/mediawiki/php-master/includes/OutputPage.php(2404): MediaWiki\Languages\LanguageConverterFactory->getLanguageConverter(StubUserLang)
#2 /srv/mediawiki/php-master/includes/OutputPage.php(2536): OutputPage->addAcceptLanguage()
#3 /srv/mediawiki/php-master/includes/OutputPage.php(2647): OutputPage->sendCacheControl()
#4 /srv/mediawiki/php-master/includes/MediaWiki.php(924): OutputPage->output(boolean)
#5 /srv/mediawiki/php-master/includes/MediaWiki.php(937): MediaWiki::{closure}()
#6 /srv/mediawiki/php-master/includes/MediaWiki.php(564): MediaWiki->main()
#7 /srv/mediawiki/php-master/index.php(53): MediaWiki->run()
#8 /srv/mediawiki/php-master/index.php(46): wfIndexMain()
#9 /srv/mediawiki/w/index.php(3): require(string)
#10 {main}

Event Timeline

So the issue here is that the language (which comes from Title::getPageLanguage(), which for a special page just returns $wgLang) does not get unstubbed, and LanguageConverterFactory method signatures have been made more strict recently.

Can't reproduce locally because LanguageConverterFactory::getLanguageConverter() reads from cache instead (ie. something somewhere calls the method with no argument before the special page is executed).

A less niche special page that's affected is search.

Tgr moved this task from Incoming to QA on the Growth-Team (Sprint 0 (Growth Team)) board.
Tgr moved this task from QA to In Progress on the Growth-Team (Sprint 0 (Growth Team)) board.

Not actually fixed, just shifted the issue a bit.

[Yhh7PjFNYH4X7sFKL3raOwAAAAY] /wiki/Speci%C3%A1ln%C3%AD:Homepage/newcomertask/2545 TypeError: Argument 1 passed to TrivialLanguageConverter::__construct() must be an instance of Language, instance of StubUserLang given, called in /srv/mediawiki/php-master/vendor/wikimedia/object-factory/src/ObjectFactory/ObjectFactory.php on line 244

Backtrace:

from /srv/mediawiki/php-master/includes/language/TrivialLanguageConverter.php(58)
#0 /srv/mediawiki/php-master/vendor/wikimedia/object-factory/src/ObjectFactory/ObjectFactory.php(244): TrivialLanguageConverter->__construct(StubUserLang, MediaWikiTitleCodec)
#1 /srv/mediawiki/php-master/vendor/wikimedia/object-factory/src/ObjectFactory/ObjectFactory.php(150): Wikimedia\ObjectFactory\ObjectFactory::getObjectFromSpec(array, array)
#2 /srv/mediawiki/php-master/includes/language/LanguageConverterFactory.php(160): Wikimedia\ObjectFactory\ObjectFactory->createObject(array, array)
#3 /srv/mediawiki/php-master/includes/language/LanguageConverterFactory.php(179): MediaWiki\Languages\LanguageConverterFactory->instantiateConverter(StubUserLang)
#4 /srv/mediawiki/php-master/includes/OutputPage.php(2404): MediaWiki\Languages\LanguageConverterFactory->getLanguageConverter(StubUserLang)
#5 /srv/mediawiki/php-master/includes/OutputPage.php(2536): OutputPage->addAcceptLanguage()
#6 /srv/mediawiki/php-master/includes/OutputPage.php(2647): OutputPage->sendCacheControl()
#7 /srv/mediawiki/php-master/includes/MediaWiki.php(924): OutputPage->output(boolean)
#8 /srv/mediawiki/php-master/includes/MediaWiki.php(937): MediaWiki::{closure}()
#9 /srv/mediawiki/php-master/includes/MediaWiki.php(564): MediaWiki->main()
#10 /srv/mediawiki/php-master/index.php(53): MediaWiki->run()
#11 /srv/mediawiki/php-master/index.php(46): wfIndexMain()
#12 /srv/mediawiki/w/index.php(3): require(string)
#13 {main}

Change 765675 had a related patch set uploaded (by Gergő Tisza; author: Gergő Tisza):

[mediawiki/core@master] Remove TrivialLanguageConverter::__construct() type hint

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

Change 765675 merged by jenkins-bot:

[mediawiki/core@master] Remove TrivialLanguageConverter::__construct() type hint

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

Tgr renamed this task from Special:Homepage/newcomertask throws exception on beta to Some special pages (such as search) throw exceptions on beta.Feb 25 2022, 7:21 AM