Page MenuHomePhabricator

"InvalidArgumentException: Blocker must be a local user" from GlobalBlocking
Closed, ResolvedPublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   InvalidArgumentException: Blocker must be a local user or a name that cannot be a local user
exception.trace
from /srv/mediawiki/php-1.38.0-wmf.16/includes/block/DatabaseBlock.php(1177)
#0 /srv/mediawiki/php-1.38.0-wmf.16/extensions/GlobalBlocking/includes/GlobalBlock.php(41): MediaWiki\Block\DatabaseBlock->setBlocker(User)
#1 /srv/mediawiki/php-1.38.0-wmf.16/extensions/GlobalBlocking/includes/GlobalBlock.php(21): GlobalBlock->setGlobalBlocker(stdClass)
#2 /srv/mediawiki/php-1.38.0-wmf.16/extensions/GlobalBlocking/includes/GlobalBlocking.php(40): GlobalBlock->__construct(stdClass, array, array)
#3 /srv/mediawiki/php-1.38.0-wmf.16/extensions/GlobalBlocking/includes/GlobalBlockingHooks.php(141): GlobalBlocking::getUserBlock(User, string)
#4 /srv/mediawiki/php-1.38.0-wmf.16/includes/HookContainer/HookContainer.php(160): GlobalBlockingHooks->onUserIsBlockedGlobally(User, string, boolean, NULL)
#5 /srv/mediawiki/php-1.38.0-wmf.16/includes/HookContainer/HookRunner.php(4160): MediaWiki\HookContainer\HookContainer->run(string, array)
#6 /srv/mediawiki/php-1.38.0-wmf.16/includes/user/User.php(1832): MediaWiki\HookContainer\HookRunner->onUserIsBlockedGlobally(User, string, boolean, NULL)
#7 /srv/mediawiki/php-1.38.0-wmf.16/includes/user/PasswordReset.php(357): User->getGlobalBlock()
#8 /srv/mediawiki/php-1.38.0-wmf.16/includes/user/PasswordReset.php(160): PasswordReset->isBlocked(User)
#9 /srv/mediawiki/php-1.38.0-wmf.16/includes/user/PasswordReset.php(130): PasswordReset->computeIsAllowed(User)
#10 /srv/mediawiki/php-1.38.0-wmf.16/includes/libs/MapCacheLRU.php(268): PasswordReset->{closure}()
#11 /srv/mediawiki/php-1.38.0-wmf.16/includes/user/PasswordReset.php(131): MapCacheLRU->getWithSetCallback(string, Closure)
#12 /srv/mediawiki/php-1.38.0-wmf.16/includes/specialpage/LoginSignupSpecialPage.php(996): PasswordReset->isAllowed(User)
#13 /srv/mediawiki/php-1.38.0-wmf.16/includes/specialpage/LoginSignupSpecialPage.php(707): LoginSignupSpecialPage->getFieldDefinitions()
#14 /srv/mediawiki/php-1.38.0-wmf.16/includes/specialpage/AuthManagerSpecialPage.php(678): LoginSignupSpecialPage->onAuthChangeFormFields(array, array, array, string)
#15 /srv/mediawiki/php-1.38.0-wmf.16/includes/specialpage/LoginSignupSpecialPage.php(662): AuthManagerSpecialPage->fieldInfoToFormDescriptor(array, array, string)
#16 /srv/mediawiki/php-1.38.0-wmf.16/includes/specialpage/AuthManagerSpecialPage.php(419): LoginSignupSpecialPage->getAuthForm(array, string)
#17 /srv/mediawiki/php-1.38.0-wmf.16/includes/specialpage/LoginSignupSpecialPage.php(314): AuthManagerSpecialPage->trySubmit()
#18 /srv/mediawiki/php-1.38.0-wmf.16/includes/specialpage/SpecialPage.php(671): LoginSignupSpecialPage->execute(NULL)
#19 /srv/mediawiki/php-1.38.0-wmf.16/includes/specialpage/SpecialPageFactory.php(1378): SpecialPage->run(NULL)
#20 /srv/mediawiki/php-1.38.0-wmf.16/includes/MediaWiki.php(314): MediaWiki\SpecialPage\SpecialPageFactory->executePath(string, RequestContext)
#21 /srv/mediawiki/php-1.38.0-wmf.16/includes/MediaWiki.php(903): MediaWiki->performRequest()
#22 /srv/mediawiki/php-1.38.0-wmf.16/includes/MediaWiki.php(563): MediaWiki->main()
#23 /srv/mediawiki/php-1.38.0-wmf.16/index.php(53): MediaWiki->run()
#24 /srv/mediawiki/php-1.38.0-wmf.16/index.php(46): wfIndexMain()
#25 /srv/mediawiki/w/index.php(3): require(string)
#26 {main}
Notes

Details

Request URL
https://meta.wikimedia.org/w/index.php?title=*&returnto=*

Event Timeline

Adding @Zabe and @Majavah as I see some recent updates to GlobalBlock (5000c74c8b0986967f3e927f67790d5ce126a5af and 9b92b5e93702fc53bbf53e5a9bb2bcde568f09a9) — no idea if they're related to this.

Caused by https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=44894841. It seems the globalblocks table did not get updated while the user got renamed. So there are now entries of a non-existent user.

MariaDB [centralauth_p]> select * from globalblocks where gb_by='QuiteUnusual' limit 5;
+---------+----------------------------+--------------+------------+-------------------------------+----------------+--------------+----------------+-------------------------------------+-------------------------------------+
| gb_id   | gb_address                 | gb_by        | gb_by_wiki | gb_reason                     | gb_timestamp   | gb_anon_only | gb_expiry      | gb_range_start                      | gb_range_end                        |
+---------+----------------------------+--------------+------------+-------------------------------+----------------+--------------+----------------+-------------------------------------+-------------------------------------+
| 1090467 | 46.148.234.229             | QuiteUnusual | metawiki   | Cross-wiki spam: spambot      | 20210923111108 |            0 | 20220323111108 | 2E94EAE5                            | 2E94EAE5                            |
| 1119708 | 87.74.55.0/24              | QuiteUnusual | metawiki   | Long-term abuse               | 20211006120836 |            0 | 20220406120836 | 574A3700                            | 574A37FF                            |
| 1233665 | 47.234.198.142             | QuiteUnusual | metawiki   | Cross-wiki abuse: harassment  | 20211029134032 |            0 | 20220129134032 | 2FEAC68E                            | 2FEAC68E                            |
| 1343170 | 205.213.208.0/24           | QuiteUnusual | metawiki   | Long-term abuse               | 20211118152550 |            0 | 20220518152550 | CDD5D000                            | CDD5D0FF                            |
| 1343401 | 2001:4454:628:0:0:0:0:0/48 | QuiteUnusual | metawiki   | Long-term abuse               | 20211123120223 |            0 | 20220223120223 | v6-20014454062800000000000000000000 | v6-200144540628FFFFFFFFFFFFFFFFFFFF |
+---------+----------------------------+--------------+------------+-------------------------------+----------------+--------------+----------------+-------------------------------------+-------------------------------------+
5 rows in set (0.13 sec)

MariaDB [centralauth_p]>

Change 751992 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/extensions/GlobalBlocking@master] maintenance: add a script for updating outdated blockers

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

We very briefly talked about this on IRC. The above patch provides a maintenance script to fix the currently wrong entries in the globalblocks table. The proper solution to this is to migrate the table to use CentralIdLookup instead of usernames.

Change 751992 merged by jenkins-bot:

[mediawiki/extensions/GlobalBlocking@master] maintenance: add a script for updating outdated blockers

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

Krinkle renamed this task from InvalidArgumentException: Blocker must be a local user or a name that cannot be a local user to "InvalidArgumentException: Blocker must be a local user" from GlobalBlocking.Jan 13 2022, 6:41 PM

Mentioned in SAL (#wikimedia-operations) [2022-01-18T09:50:24Z] <taavi> mwscript extensions/GlobalBlocking/maintenance/FixBlockerUsername.php --wiki metawiki "QuiteUnusual" "MarcGarver" # T298707

Zabe claimed this task.

The error should be mitigated for now until another steward gets renamed. I have created T299371 for the proper fix.

Mentioned in SAL (#wikimedia-operations) [2023-01-12T11:11:22Z] <zabe> mwscript extensions/GlobalBlocking/maintenance/FixBlockerUsername.php --wiki metawiki "Defender" "Elton" # T298707

Mentioned in SAL (#wikimedia-operations) [2023-01-13T18:25:08Z] <zabe> mwscript extensions/GlobalBlocking/maintenance/FixBlockerUsername.php --wiki metawiki "Green Giant" "Cromium" # T298707