Page MenuHomePhabricator

MediaWiki\Session\SessionOverflowException: Multiple sessions for this request tied for top priority: [100]MediaWiki\Extension\OAuth\SessionProvider<anon>h5cshtuck442udqpv2lsupnhp2u8buao, [50]CentralAuthSessionProvider<anon>rsp
Open, Needs TriagePublicPRODUCTION ERROR

Description

Error
normalized_message
[{reqId}] {exception_url}   MediaWiki\Session\SessionOverflowException: Multiple sessions for this request tied for top priority: [100]MediaWiki\Extension\OAuth\SessionProvider<anon>h5cshtuck442udqpv2lsupnhp2u8buao, [50]CentralAuthSessionProvider<anon>rsp
FrameLocationCall
from/srv/mediawiki/php-1.44.0-wmf.19/includes/session/SessionManager.php(538)
#0/srv/mediawiki/php-1.44.0-wmf.19/includes/session/SessionManager.php(198)MediaWiki\Session\SessionManager->getSessionInfoForRequest(MediaWiki\Request\WebRequest)
#1/srv/mediawiki/php-1.44.0-wmf.19/includes/Request/WebRequest.php(870)MediaWiki\Session\SessionManager->getSessionForRequest(MediaWiki\Request\WebRequest)
#2/srv/mediawiki/php-1.44.0-wmf.19/includes/user/User.php(1045)MediaWiki\Request\WebRequest->getSession()
#3/srv/mediawiki/php-1.44.0-wmf.19/includes/user/User.php(393)MediaWiki\User\User->loadDefaults()
#4/srv/mediawiki/php-1.44.0-wmf.19/includes/user/User.php(1603)MediaWiki\User\User->load()
#5/srv/mediawiki/php-1.44.0-wmf.19/includes/user/Options/UserOptionsManager.php(562)MediaWiki\User\User->getName()
#6/srv/mediawiki/php-1.44.0-wmf.19/includes/user/Options/UserOptionsManager.php(414)MediaWiki\User\Options\UserOptionsManager->getCacheKey(MediaWiki\User\User)
#7/srv/mediawiki/php-1.44.0-wmf.19/includes/user/Options/UserOptionsManager.php(176)MediaWiki\User\Options\UserOptionsManager->loadUserOptions(MediaWiki\User\User, int)
#8/srv/mediawiki/php-1.44.0-wmf.19/includes/context/RequestContext.php(548)MediaWiki\User\Options\UserOptionsManager->getOption(MediaWiki\User\User, string)
#9/srv/mediawiki/php-1.44.0-wmf.19/includes/context/RequestContext.php(527)MediaWiki\Context\RequestContext->fetchSkinName()
#10/srv/mediawiki/php-1.44.0-wmf.19/includes/context/RequestContext.php(583)MediaWiki\Context\RequestContext->getSkinName()
#11/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/Stages/HandleSectionLinks.php(215)MediaWiki\Context\RequestContext->getSkin()
#12/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/Stages/HandleSectionLinks.php(62)MediaWiki\OutputTransform\Stages\HandleSectionLinks->resolveSkin(array)
#13/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/Stages/HandleSectionLinks.php(49)MediaWiki\OutputTransform\Stages\HandleSectionLinks->replaceHeadings(string, array)
#14/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/ContentTextTransformStage.php(17)MediaWiki\OutputTransform\Stages\HandleSectionLinks->transformText(string, MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#15/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/OutputTransformPipeline.php(80)MediaWiki\OutputTransform\ContentTextTransformStage->transform(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#16/srv/mediawiki/php-1.44.0-wmf.19/includes/language/MessageParser.php(158)MediaWiki\OutputTransform\OutputTransformPipeline->run(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#17/srv/mediawiki/php-1.44.0-wmf.19/includes/language/Message/Message.php(1460)MediaWiki\Language\MessageParser->parse(string, MediaWiki\Page\PageReferenceValue, bool, bool, LanguageEn)
#18/srv/mediawiki/php-1.44.0-wmf.19/includes/language/Message/Message.php(1050)MediaWiki\Message\Message->parseText(string)
#19/srv/mediawiki/php-1.44.0-wmf.19/includes/language/Message/Message.php(1080)MediaWiki\Message\Message->format(string)
#20[internal function]MediaWiki\Message\Message->__toString()
#21/srv/mediawiki/php-1.44.0-wmf.19/includes/exception/HttpError.php(50)Exception->__construct(MediaWiki\Message\Message)
#22/srv/mediawiki/php-1.44.0-wmf.19/includes/Setup.php(519)HttpError->__construct(int, MediaWiki\Message\Message)
#23/srv/mediawiki/php-1.44.0-wmf.19/includes/WebStart.php(85)require_once(string)
#24/srv/mediawiki/php-1.44.0-wmf.19/rest.php(32)require(string)
#25/srv/mediawiki/w/rest.php(3)require(string)
#26{main}
Impact
Notes

Details

Request URL
https://www.wikidata.org/w/rest.php/wikibase/v0/entities/lexemes/L1041834/senses

Event Timeline

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

Seems like a SessionManager bug - those sessions clearly don't have the same priority:

[b2fa3a34-b31a-4584-9900-06adcb3bde76] /w/rest.php/wikibase/v0/entities/lexemes/L1041834/senses   MediaWiki\Session\SessionOverflowException: Multiple sessions for this request tied for top priority: [100]MediaWiki\Extension\OAuth\SessionProvider<anon>h5cshtuck442udqpv2lsupnhp2u8buao, [50]CentralAuthSessionProvider<anon>rspba02td80u2kaju3teghvqm0tf11qi

But also, the priority of CentralAuthSessionProvider should be 11, not 50 (it's hardcoded). What's going on?

Seems like a one-off so far (logstash).

Seems like a SessionManager bug - those sessions clearly don't have the same priority:

[b2fa3a34-b31a-4584-9900-06adcb3bde76] /w/rest.php/wikibase/v0/entities/lexemes/L1041834/senses   MediaWiki\Session\SessionOverflowException: Multiple sessions for this request tied for top priority: [100]MediaWiki\Extension\OAuth\SessionProvider<anon>h5cshtuck442udqpv2lsupnhp2u8buao, [50]CentralAuthSessionProvider<anon>rspba02td80u2kaju3teghvqm0tf11qi

But also, the priority of CentralAuthSessionProvider should be 11, not 50 (it's hardcoded). What's going on?

CentralAuthSessionProvider priority is hardcoded to 50 in extension.json, are my missing something?

Seems like a one-off so far (logstash).

This seems to be coming from the REST API, not sure if that means anything but yes SessionManager is a culprit here.

CentralAuthSessionProvider priority is hardcoded to 50 in extension.json, are my missing something?

No, I was looking at the wrong class.

I can think of two things:

  • Someone made a REST API request with both an OAuth access token and a CentralAuth cookie, and that triggered this error, despite the OAuth session provider clearly having higher priority. That would be bad (but I feel we'd know about it already, having two kinds of session information on a request can be common).
  • Someone made a REST API request with both an OAuth access token and a CentralAuth token (which both have max priority), and SessionManager correctly threw an exception, but for some reason it indicated the wrong session provider as the culprit (maybe because the request had a CentralAuth cookie as well). That would be a relatively minor issue.

The relevant logic in getSessionInfoForRequest() seems solid, I have no idea how this could be happening.

Couple more for reference...

Error
normalized_message
[{reqId}] {exception_url}   MediaWiki\Session\SessionOverflowException: Multiple sessions for this request tied for top priority: [100]MediaWiki\Extension\OAuth\SessionProvider<anon>h5cshtuck442udqpv2lsupnhp2u8buao, [50]CentralAuthSessionProvider<anon>ch5
FrameLocationCall
from/srv/mediawiki/php-1.44.0-wmf.19/includes/session/SessionManager.php(538)
#0/srv/mediawiki/php-1.44.0-wmf.19/includes/session/SessionManager.php(198)MediaWiki\Session\SessionManager->getSessionInfoForRequest(MediaWiki\Request\WebRequest)
#1/srv/mediawiki/php-1.44.0-wmf.19/includes/Request/WebRequest.php(870)MediaWiki\Session\SessionManager->getSessionForRequest(MediaWiki\Request\WebRequest)
#2/srv/mediawiki/php-1.44.0-wmf.19/includes/user/User.php(1045)MediaWiki\Request\WebRequest->getSession()
#3/srv/mediawiki/php-1.44.0-wmf.19/includes/user/User.php(393)MediaWiki\User\User->loadDefaults()
#4/srv/mediawiki/php-1.44.0-wmf.19/includes/user/User.php(1603)MediaWiki\User\User->load()
#5/srv/mediawiki/php-1.44.0-wmf.19/includes/user/Options/UserOptionsManager.php(562)MediaWiki\User\User->getName()
#6/srv/mediawiki/php-1.44.0-wmf.19/includes/user/Options/UserOptionsManager.php(414)MediaWiki\User\Options\UserOptionsManager->getCacheKey(MediaWiki\User\User)
#7/srv/mediawiki/php-1.44.0-wmf.19/includes/user/Options/UserOptionsManager.php(176)MediaWiki\User\Options\UserOptionsManager->loadUserOptions(MediaWiki\User\User, int)
#8/srv/mediawiki/php-1.44.0-wmf.19/includes/context/RequestContext.php(548)MediaWiki\User\Options\UserOptionsManager->getOption(MediaWiki\User\User, string)
#9/srv/mediawiki/php-1.44.0-wmf.19/includes/context/RequestContext.php(527)MediaWiki\Context\RequestContext->fetchSkinName()
#10/srv/mediawiki/php-1.44.0-wmf.19/includes/context/RequestContext.php(583)MediaWiki\Context\RequestContext->getSkinName()
#11/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/Stages/HandleSectionLinks.php(215)MediaWiki\Context\RequestContext->getSkin()
#12/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/Stages/HandleSectionLinks.php(62)MediaWiki\OutputTransform\Stages\HandleSectionLinks->resolveSkin(array)
#13/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/Stages/HandleSectionLinks.php(49)MediaWiki\OutputTransform\Stages\HandleSectionLinks->replaceHeadings(string, array)
#14/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/ContentTextTransformStage.php(17)MediaWiki\OutputTransform\Stages\HandleSectionLinks->transformText(string, MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#15/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/OutputTransformPipeline.php(80)MediaWiki\OutputTransform\ContentTextTransformStage->transform(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#16/srv/mediawiki/php-1.44.0-wmf.19/includes/language/MessageParser.php(158)MediaWiki\OutputTransform\OutputTransformPipeline->run(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#17/srv/mediawiki/php-1.44.0-wmf.19/includes/language/Message/Message.php(1460)MediaWiki\Language\MessageParser->parse(string, MediaWiki\Page\PageReferenceValue, bool, bool, LanguageEn)
#18/srv/mediawiki/php-1.44.0-wmf.19/includes/language/Message/Message.php(1050)MediaWiki\Message\Message->parseText(string)
#19/srv/mediawiki/php-1.44.0-wmf.19/includes/language/Message/Message.php(1080)MediaWiki\Message\Message->format(string)
#20[internal function]MediaWiki\Message\Message->__toString()
#21/srv/mediawiki/php-1.44.0-wmf.19/includes/exception/HttpError.php(50)Exception->__construct(MediaWiki\Message\Message)
#22/srv/mediawiki/php-1.44.0-wmf.19/includes/Setup.php(519)HttpError->__construct(int, MediaWiki\Message\Message)
#23/srv/mediawiki/php-1.44.0-wmf.19/includes/WebStart.php(85)require_once(string)
#24/srv/mediawiki/php-1.44.0-wmf.19/rest.php(32)require(string)
#25/srv/mediawiki/w/rest.php(3)require(string)
#26{main}
Impact
Notes
Error
normalized_message
[{reqId}] {exception_url}   MediaWiki\Session\SessionOverflowException: Multiple sessions for this request tied for top priority: [100]MediaWiki\Extension\OAuth\SessionProvider<anon>h5cshtuck442udqpv2lsupnhp2u8buao, [50]CentralAuthSessionProvider<anon>nck
FrameLocationCall
from/srv/mediawiki/php-1.44.0-wmf.19/includes/session/SessionManager.php(538)
#0/srv/mediawiki/php-1.44.0-wmf.19/includes/session/SessionManager.php(198)MediaWiki\Session\SessionManager->getSessionInfoForRequest(MediaWiki\Request\WebRequest)
#1/srv/mediawiki/php-1.44.0-wmf.19/includes/Request/WebRequest.php(870)MediaWiki\Session\SessionManager->getSessionForRequest(MediaWiki\Request\WebRequest)
#2/srv/mediawiki/php-1.44.0-wmf.19/includes/user/User.php(1045)MediaWiki\Request\WebRequest->getSession()
#3/srv/mediawiki/php-1.44.0-wmf.19/includes/user/User.php(393)MediaWiki\User\User->loadDefaults()
#4/srv/mediawiki/php-1.44.0-wmf.19/includes/user/User.php(1603)MediaWiki\User\User->load()
#5/srv/mediawiki/php-1.44.0-wmf.19/includes/user/Options/UserOptionsManager.php(562)MediaWiki\User\User->getName()
#6/srv/mediawiki/php-1.44.0-wmf.19/includes/user/Options/UserOptionsManager.php(414)MediaWiki\User\Options\UserOptionsManager->getCacheKey(MediaWiki\User\User)
#7/srv/mediawiki/php-1.44.0-wmf.19/includes/user/Options/UserOptionsManager.php(176)MediaWiki\User\Options\UserOptionsManager->loadUserOptions(MediaWiki\User\User, int)
#8/srv/mediawiki/php-1.44.0-wmf.19/includes/context/RequestContext.php(548)MediaWiki\User\Options\UserOptionsManager->getOption(MediaWiki\User\User, string)
#9/srv/mediawiki/php-1.44.0-wmf.19/includes/context/RequestContext.php(527)MediaWiki\Context\RequestContext->fetchSkinName()
#10/srv/mediawiki/php-1.44.0-wmf.19/includes/context/RequestContext.php(583)MediaWiki\Context\RequestContext->getSkinName()
#11/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/Stages/HandleSectionLinks.php(215)MediaWiki\Context\RequestContext->getSkin()
#12/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/Stages/HandleSectionLinks.php(62)MediaWiki\OutputTransform\Stages\HandleSectionLinks->resolveSkin(array)
#13/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/Stages/HandleSectionLinks.php(49)MediaWiki\OutputTransform\Stages\HandleSectionLinks->replaceHeadings(string, array)
#14/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/ContentTextTransformStage.php(17)MediaWiki\OutputTransform\Stages\HandleSectionLinks->transformText(string, MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#15/srv/mediawiki/php-1.44.0-wmf.19/includes/OutputTransform/OutputTransformPipeline.php(80)MediaWiki\OutputTransform\ContentTextTransformStage->transform(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#16/srv/mediawiki/php-1.44.0-wmf.19/includes/language/MessageParser.php(158)MediaWiki\OutputTransform\OutputTransformPipeline->run(MediaWiki\Parser\ParserOutput, MediaWiki\Parser\ParserOptions, array)
#17/srv/mediawiki/php-1.44.0-wmf.19/includes/language/Message/Message.php(1460)MediaWiki\Language\MessageParser->parse(string, MediaWiki\Page\PageReferenceValue, bool, bool, LanguageEn)
#18/srv/mediawiki/php-1.44.0-wmf.19/includes/language/Message/Message.php(1050)MediaWiki\Message\Message->parseText(string)
#19/srv/mediawiki/php-1.44.0-wmf.19/includes/language/Message/Message.php(1080)MediaWiki\Message\Message->format(string)
#20[internal function]MediaWiki\Message\Message->__toString()
#21/srv/mediawiki/php-1.44.0-wmf.19/includes/exception/HttpError.php(50)Exception->__construct(MediaWiki\Message\Message)
#22/srv/mediawiki/php-1.44.0-wmf.19/includes/Setup.php(519)HttpError->__construct(int, MediaWiki\Message\Message)
#23/srv/mediawiki/php-1.44.0-wmf.19/includes/WebStart.php(85)require_once(string)
#24/srv/mediawiki/php-1.44.0-wmf.19/rest.php(32)require(string)
#25/srv/mediawiki/w/rest.php(3)require(string)
#26{main}
Impact
Notes

FWIW these are all anonymous sessions, which means OAuth would throw an exception anyway if this error wouldn't preempt it (although that would be a user-friendlier one). So I doubt there's any user impact. Still disturbing that this is possible at all, though.