Page MenuHomePhabricator

GrowthExperiments\Mentorship\MentorManager::getMentorshipStateForUserInternal was asked to return mentorship state for a non-named user {user}
Open, Needs TriagePublicPRODUCTION ERROR

Description

Error
  • mwversion: 1.46.0-wmf.10
  • timestamp: 2026-01-09T12:25:38.645Z
  • phpversion: 8.3.29
  • reqId: e4e152b4-7d5c-4dc2-bb90-ba8140c4eb3f
  • Find reqId in Logstash
normalized_message
GrowthExperiments\Mentorship\MentorManager::getMentorshipStateForUserInternal was asked to return mentorship state for a non-named user {user}
FrameLocationCall
from/srv/mediawiki/php-1.46.0-wmf.10/extensions/GrowthExperiments/includes/Mentorship/MentorManager.php(243)
#0/srv/mediawiki/php-1.46.0-wmf.10/extensions/GrowthExperiments/includes/Mentorship/MentorManager.php(272)GrowthExperiments\Mentorship\MentorManager->getMentorshipStateForUserInternal(MediaWiki\User\User)
#1/srv/mediawiki/php-1.46.0-wmf.10/extensions/GrowthExperiments/includes/Mentorship/MentorManager.php(56)GrowthExperiments\Mentorship\MentorManager->getMentorshipStateForUser(MediaWiki\User\User)
#2/srv/mediawiki/php-1.46.0-wmf.10/extensions/GrowthExperiments/includes/Mentorship/MentorManager.php(66)GrowthExperiments\Mentorship\MentorManager->isUserIneligibleForMentorship(MediaWiki\User\User)
#3/srv/mediawiki/php-1.46.0-wmf.10/extensions/GrowthExperiments/includes/Mentorship/MentorManager.php(102)GrowthExperiments\Mentorship\MentorManager->getMentorUserIdentityIfExists(MediaWiki\User\User, string)
#4/srv/mediawiki/php-1.46.0-wmf.10/extensions/GrowthExperiments/includes/MentorDashboard/PersonalizedPraise/MediaWikiEventIngress/PageRevisionUpdatedIngress.php(52)GrowthExperiments\Mentorship\MentorManager->getMentorForUserIfExists(MediaWiki\User\User)
#5/srv/mediawiki/php-1.46.0-wmf.10/includes/DomainEvent/EventDispatchEngine.php(205)GrowthExperiments\MentorDashboard\PersonalizedPraise\MediaWikiEventIngress\PageRevisionUpdatedIngress->handlePageRevisionUpdatedEvent(MediaWiki\Page\Event\PageLatestRevisionChangedEvent)
#6/srv/mediawiki/php-1.46.0-wmf.10/includes/DomainEvent/EventDispatchEngine.php(194)MediaWiki\DomainEvent\EventDispatchEngine->invoke(array, MediaWiki\Page\Event\PageLatestRevisionChangedEvent)
#7/srv/mediawiki/php-1.46.0-wmf.10/includes/Deferred/MWCallableUpdate.php(52)MediaWiki\DomainEvent\EventDispatchEngine->MediaWiki\DomainEvent\{closure}(string)
#8/srv/mediawiki/php-1.46.0-wmf.10/includes/Deferred/DeferredUpdates.php(444)MediaWiki\Deferred\MWCallableUpdate->doUpdate()
#9/srv/mediawiki/php-1.46.0-wmf.10/includes/Deferred/DeferredUpdates.php(187)MediaWiki\Deferred\DeferredUpdates::attemptUpdate(MediaWiki\Deferred\MWCallableUpdate)
#10/srv/mediawiki/php-1.46.0-wmf.10/includes/Deferred/DeferredUpdates.php(274)MediaWiki\Deferred\DeferredUpdates::run(MediaWiki\Deferred\MWCallableUpdate)
#11/srv/mediawiki/php-1.46.0-wmf.10/includes/Deferred/DeferredUpdatesScope.php(229)MediaWiki\Deferred\DeferredUpdates::MediaWiki\Deferred\{closure}(MediaWiki\Deferred\MWCallableUpdate, int)
#12/srv/mediawiki/php-1.46.0-wmf.10/includes/Deferred/DeferredUpdatesScope.php(158)MediaWiki\Deferred\DeferredUpdatesScope->processStageQueue(int, int, Closure)
#13/srv/mediawiki/php-1.46.0-wmf.10/includes/Deferred/DeferredUpdates.php(268)MediaWiki\Deferred\DeferredUpdatesScope->processUpdates(int, Closure)
#14/srv/mediawiki/php-1.46.0-wmf.10/includes/MediaWikiEntryPoint.php(653)MediaWiki\Deferred\DeferredUpdates::doUpdates()
#15/srv/mediawiki/php-1.46.0-wmf.10/includes/MediaWikiEntryPoint.php(475)MediaWiki\MediaWikiEntryPoint->restInPeace()
#16/srv/mediawiki/php-1.46.0-wmf.10/includes/MediaWikiEntryPoint.php(433)MediaWiki\MediaWikiEntryPoint->doPostOutputShutdown()
#17/srv/mediawiki/php-1.46.0-wmf.10/includes/MediaWikiEntryPoint.php(190)MediaWiki\MediaWikiEntryPoint->postOutputShutdown()
#18/srv/mediawiki/php-1.46.0-wmf.10/api.php(30)MediaWiki\MediaWikiEntryPoint->run()
#19/srv/mediawiki/w/api.php(3)require(string)
#20{main}
Impact

~ 3,129 in the last 24h, user impact tbd

Notes

Details

MediaWiki Version
1.46.0-wmf.10
Request URL
https://fr.wikipedia.org/w/api.php
Related Changes in Gerrit:

Event Timeline

That was introduced in fix(Mentorship): Do not run MenteeGraduation for temporary accounts for T412858: eswiki: Mentee Graduation is not taking temporary users into account.

I'm a bit surprised to see so many results. We must have made a mistake in that commit. Though the impact is just that log-spam, it should already return the correct result.

Specifically, why is $this->mentorStore->isMentee( $user ) not returning null for a temporary account? Do these temporary accounts somehow do have a mentor? Then that would be a problem that we indeed should fix.

Change #1226927 had a related patch set uploaded (by Michael Große; author: Michael Große):

[mediawiki/extensions/GrowthExperiments@master] fix(PersonalizedPraise): don't try to praise Temporary Accounts

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

I tried to figure out whether we inadvertently were assigning mentors to temporary accounts, and while doing so, I noticed I had already debugged this to the point of that writing the commits was less effort than documenting my insights in words here and have somebody else look into it again on their own time. The above change maybe needs another test, but otherwise should be done.

Change #1226927 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] fix(PersonalizedPraise): don't try to praise Temporary Accounts

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