Page MenuHomePhabricator

MWException: User must be logged in to view notification!
Closed, ResolvedPublic

Description

[2022-09-19T06:12:57.313021+00:00] exception.ERROR: [5b09a48854f8d5c074793c5f] /w/api.php   MWException: User must be logged in to view notification! {"exception":"[object] (MWException(code: 0): User must be logged in to view notification! at /srv/mediawiki/tags/2022-09-14_14:09:34/extensions/Echo/includes/NotifUser.php:127)
[stacktrace]
#0 /srv/mediawiki/tags/2022-09-14_14:09:34/extensions/Echo/includes/Hooks.php(1302): MWEchoNotifUser::newFromUser()
#1 /srv/mediawiki/tags/2022-09-14_14:09:34/includes/deferred/MWCallableUpdate.php(38): MediaWiki\\Extension\\Notifications\\Hooks::MediaWiki\\Extension\\Notifications\\{closure}()
#2 /srv/mediawiki/tags/2022-09-14_14:09:34/includes/deferred/DeferredUpdates.php(474): MWCallableUpdate->doUpdate()
#3 /srv/mediawiki/tags/2022-09-14_14:09:34/includes/deferred/DeferredUpdates.php(399): DeferredUpdates::attemptUpdate()
#4 /srv/mediawiki/tags/2022-09-14_14:09:34/includes/deferred/DeferredUpdates.php(214): DeferredUpdates::run()
#5 /srv/mediawiki/tags/2022-09-14_14:09:34/includes/deferred/DeferredUpdatesScope.php(267): DeferredUpdates::{closure}()
#6 /srv/mediawiki/tags/2022-09-14_14:09:34/includes/deferred/DeferredUpdatesScope.php(196): DeferredUpdatesScope->processStageQueue()
#7 /srv/mediawiki/tags/2022-09-14_14:09:34/includes/deferred/DeferredUpdates.php(235): DeferredUpdatesScope->processUpdates()
#8 /srv/mediawiki/tags/2022-09-14_14:09:34/includes/MediaWiki.php(1104): DeferredUpdates::doUpdates()
#9 /srv/mediawiki/tags/2022-09-14_14:09:34/includes/MediaWiki.php(838): MediaWiki->restInPeace()
#10 /srv/mediawiki/tags/2022-09-14_14:09:34/api.php(125): MediaWiki->doPostOutputShutdown()
#11 /srv/mediawiki/tags/2022-09-14_14:09:34/api.php(45): wfApiMain()
#12 {main}
","exception_url":"/w/api.php","reqId":"5b09a48854f8d5c074793c5f","caught_by":"other"} []

Seems to correspond to this:

"POST /w/api.php HTTP/2.0" 200 69 "https://translatewiki.net/wiki/Special:ManageTranslatorSandbox"

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript
Tgr subscribed.

This is happening in Echo's UserSaveSettings hook handler, so assuming the user must be logged in seems reasonable. I guess $user->logout() gets called some time between saving settings and running the deferred?

This happens when we delete users from our sandbox. So the user literally doesn't exist anymore. Wondering how to make Echo handle this gracefully?

This happens when we delete users from our sandbox. So the user literally doesn't exist anymore. Wondering how to make Echo handle this gracefully?

@Nikerabbit do you know why the UserSaveSettings hook is triggered when deleting users from the sandbox? EDIT: nevermind, @Tgr answered that above with a hypothesis.

Change 869741 had a related patch set uploaded (by Kosta Harlan; author: Kosta Harlan):

[mediawiki/extensions/Echo@master] Hooks: Check if user is still registered

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

Change 869741 merged by jenkins-bot:

[mediawiki/extensions/Echo@master] Hooks: Check if user is still registered

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

Seems to work well in translatewiki.net.

Etonkovidova subscribed.

Seems to work well in translatewiki.net.

Thank you, @Nikerabbit for checking!