For example, if I open https://dev.translatewiki.net/w/i.php?title=Special:ContentTranslation&page=Vantaa&from=en&to=es&targettitle=Vantaa&version=2 in incognito mode, I get the following error:
[946fc2b6f7ea09fc38e7af62] /w/i.php?title=Special:ContentTranslation&page=Vantaa&from=en&to=es&targettitle=Vantaa&version=1 Exception from line 20 of /www/dev.translatewiki.net/docroot/w/extensions/ContentTranslation/includes/Translator.php: User account is not global Backtrace: #0 /www/dev.translatewiki.net/docroot/w/extensions/ContentTranslation/specials/SpecialContentTranslation.php(104): ContentTranslation\Translator->getGlobalUserId() #1 /www/dev.translatewiki.net/docroot/w/extensions/ContentTranslation/specials/SpecialContentTranslation.php(151): SpecialContentTranslation->isExistingTranslation() #2 /www/dev.translatewiki.net/docroot/w/extensions/ContentTranslation/specials/SpecialContentTranslation.php(187): SpecialContentTranslation->onTranslationView() #3 /www/dev.translatewiki.net/docroot/w/extensions/ContentTranslation/specials/ContentTranslationSpecialPage.php(23): SpecialContentTranslation->getRedirectURL() #4 /www/dev.translatewiki.net/docroot/w/includes/specialpage/SpecialPage.php(569): ContentTranslationSpecialPage->execute(NULL) #5 /www/dev.translatewiki.net/docroot/w/includes/specialpage/SpecialPageFactory.php(581): SpecialPage->run(NULL) #6 /www/dev.translatewiki.net/docroot/w/includes/MediaWiki.php(288): MediaWiki\Special\SpecialPageFactory->executePath(Title, RequestContext) #7 /www/dev.translatewiki.net/docroot/w/includes/MediaWiki.php(868): MediaWiki->performRequest() #8 /www/dev.translatewiki.net/docroot/w/includes/MediaWiki.php(525): MediaWiki->main() #9 /www/dev.translatewiki.net/docroot/w/index.php(42): MediaWiki->run() #10 {main}
This can happen in two ways:
- Session has expired when user clicks to continue a draft on the dashboard
- Direct access via browser history or bookmarks
Logstash has 88 instances of this for the past 7 days. That is not a lot, but it's still log spam that should be fixed.
Suggested fix: Check if user is anonymous before loading the draft. This is mostly easily done on the PHP side, and it can display a nicely formatted error message instead. For example using SpecialPage::requireLogin.