Page MenuHomePhabricator

PHP fatal error CirrusSearchTextSanitizer.php line 37: Call to a member function setEditSectionTokens() on a non-object
Closed, ResolvedPublic

Description

PHP fatal error in /usr/local/apache/common-local/php-1.22wmf16/extensions/CirrusSearch/CirrusSearchTextSanitizer.php line 37:
Call to a member function setEditSectionTokens() on a non-object

Found after marking for translation [[mw:Help:TemplateData]] (without invalidating translation, but I doubt that matters): https://www.mediawiki.org/w/index.php?title=Special:PageTranslation&do=mark&target=Help%3ATemplateData&revision=750890

It's not in the log so it seems the action failed: https://www.mediawiki.org/w/index.php?title=Special%3ALog&&page=Help%3ATemplateData


Version: master
Severity: major
URL: https://www.mediawiki.org/wiki/Special:PageTranslation

Details

Reference
bz53938

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 22 2014, 2:02 AM
bzimport added a project: CirrusSearch.
bzimport set Reference to bz53938.

[09-Sep-2013 13:33:46] Fatal error: Call to a member function setEditSectionTokens() on a non-object at /usr/local/apache/common-local/php-1.22wmf16/extensions/CirrusSearch/CirrusSearchTextSanitizer.php on line 37
Server: mw1004
URL: http://[unknown-host]
Backtrace:
#0 /usr/local/apache/common-local/php-1.22wmf16/extensions/CirrusSearch/CirrusSearchTextSanitizer.php(37): CirrusSearchTextSanitizer::getSantizedTextFromTitle()
#1 /usr/local/apache/common-local/php-1.22wmf16/extensions/CirrusSearch/CirrusSearch.body.php(53): CirrusSearchTextSanitizer::getSantizedTextFromTitle(Object(Title))
#2 /usr/local/apache/common-local/php-1.22wmf16/includes/search/SearchUpdate.php(111): CirrusSearch->getTextFromContent(Object(Title), Object(WikitextContent))
#3 /usr/local/apache/common-local/php-1.22wmf16/extensions/CirrusSearch/CirrusSearchUpdater.php(86): SearchUpdate->doUpdate()
#4 /usr/local/apache/common-local/php-1.22wmf16/extensions/CirrusSearch/CirrusSearchUpdater.php(313): CirrusSearchUpdater::updateFromTitle(Object(Title))
#5 /usr/local/apache/common-local/php-1.22wmf16/extensions/CirrusSearch/CirrusSearchUpdater.php(96): CirrusSearchUpdater::updateLinkedArticles(Object(LinksUpdate))
#6 [internal function]: CirrusSearchUpdater::linksUpdateCompletedHook(Object(LinksUpdate))
#7 /usr/local/apache/common-local/php-1.22wmf16/includes/Hooks.php(199): call_user_func_array('CirrusSearchUpd...', Array)
#8 /usr/local/apache/common-local/php-1.22wmf16/includes/GlobalFunctions.php(3878): Hooks::run('LinksUpdateComp...', Array)
#9 /usr/local/apache/common-local/php-1.22wmf16/includes/LinksUpdate.php(123): wfRunHooks('LinksUpdateComp...', Array)
#10 /usr/local/apache/common-local/php-1.22wmf16/includes/DataUpdate.php(102): LinksUpdate->doUpdate()
#11 /usr/local/apache/common-local/php-1.22wmf16/includes/WikiPage.php(2077): DataUpdate::runUpdates(Array)
#12 /usr/local/apache/common-local/php-1.22wmf16/includes/WikiPage.php(1826): WikiPage->doEditUpdates(Object(Revision), Object(User), Array)
#13 /usr/local/apache/common-local/php-1.22wmf16/includes/WikiPage.php(1594): WikiPage->doEditContent(Object(WikitextContent), 'Importing a new...', 48, false, Object(User))
#14 [internal function]: WikiPage->doEdit('<noinclude><lan...', 'Importing a new...', 48, false, Object(User))
#15 /usr/local/apache/common-local/php-1.22wmf16/includes/Article.php(2021): call_user_func_array(Array, Array)
#16 /usr/local/apache/common-local/php-1.22wmf16/extensions/Translate/tag/TranslateRenderJob.php(63): Article->__call('doEdit', Array)
#17 /usr/local/apache/common-local/php-1.22wmf16/extensions/Translate/tag/TranslateRenderJob.php(63): Article->doEdit('<noinclude><lan...', 'Importing a new...', 48, false, Object(User))
#18 /usr/local/apache/common-local/php-1.22wmf16/extensions/Translate/tag/PageTranslationHooks.php(157): TranslateRenderJob->run()
#19 /usr/local/apache/common-local/php-1.22wmf16/extensions/Translate/tag/PageTranslationHooks.php(137): PageTranslationHooks::updateTranslationPage(Object(TranslatablePage), 'en', Object(User), 50, 'Importing a new...')
#20 [internal function]: PageTranslationHooks::onSectionSave(Object(WikiPage), Object(User), Object(WikitextContent), 'Importing a new...', 0, NULL, NULL, 50, NULL, Object(Status), false)
#21 /usr/local/apache/common-local/php-1.22wmf16/includes/Hooks.php(199): call_user_func_array('PageTranslation...', Array)
#22 /usr/local/apache/common-local/php-1.22wmf16/includes/GlobalFunctions.php(3878): Hooks::run('PageContentSave...', Array)
#23 /usr/local/apache/common-local/php-1.22wmf16/includes/WikiPage.php(1932): wfRunHooks('PageContentSave...', Array)
#24 /usr/local/apache/common-local/php-1.22wmf16/includes/WikiPage.php(1594): WikiPage->doEditContent(Object(WikitextContent), 'Importing a new...', 48, false, Object(User))
#25 /usr/local/apache/common-local/php-1.22wmf16/extensions/Translate/utils/MessageUpdateJob.php(43): WikiPage->doEdit('Help with the l...', 'Importing a new...', 48, false, Object(User))
#26 /usr/local/apache/common-local/php-1.22wmf16/maintenance/runJobs.php(101): MessageUpdateJob->run()

[09-Sep-2013 12:00:15] Fatal error: Call to a member function setEditSectionTokens() on a non-object at /usr/local/apache/common-local/php-1.22wmf16/extensions/CirrusSearch/CirrusSearchTextSanitizer.php on line 37
Server: mw1170
Method: POST
URL: http://www.mediawiki.org/wiki/Special:PageTranslation
Backtrace:
#0 /usr/local/apache/common-local/php-1.22wmf16/extensions/CirrusSearch/CirrusSearchTextSanitizer.php(37): CirrusSearchTextSanitizer::getSantizedTextFromTitle()
#1 /usr/local/apache/common-local/php-1.22wmf16/extensions/CirrusSearch/CirrusSearch.body.php(53): CirrusSearchTextSanitizer::getSantizedTextFromTitle(Object(Title))
#2 /usr/local/apache/common-local/php-1.22wmf16/includes/search/SearchUpdate.php(111): CirrusSearch->getTextFromContent(Object(Title), Object(WikitextContent))
#3 /usr/local/apache/common-local/php-1.22wmf16/extensions/CirrusSearch/CirrusSearchUpdater.php(86): SearchUpdate->doUpdate()
#4 /usr/local/apache/common-local/php-1.22wmf16/extensions/CirrusSearch/CirrusSearchUpdater.php(313): CirrusSearchUpdater::updateFromTitle(Object(Title))
#5 /usr/local/apache/common-local/php-1.22wmf16/extensions/CirrusSearch/CirrusSearchUpdater.php(96): CirrusSearchUpdater::updateLinkedArticles(Object(LinksUpdate))
#6 [internal function]: CirrusSearchUpdater::linksUpdateCompletedHook(Object(LinksUpdate))
#7 /usr/local/apache/common-local/php-1.22wmf16/includes/Hooks.php(199): call_user_func_array('CirrusSearchUpd...', Array)
#8 /usr/local/apache/common-local/php-1.22wmf16/includes/GlobalFunctions.php(3878): Hooks::run('LinksUpdateComp...', Array)
#9 /usr/local/apache/common-local/php-1.22wmf16/includes/LinksUpdate.php(123): wfRunHooks('LinksUpdateComp...', Array)
#10 /usr/local/apache/common-local/php-1.22wmf16/includes/DataUpdate.php(102): LinksUpdate->doUpdate()
#11 /usr/local/apache/common-local/php-1.22wmf16/includes/WikiPage.php(2077): DataUpdate::runUpdates(Array)
#12 /usr/local/apache/common-local/php-1.22wmf16/includes/WikiPage.php(1826): WikiPage->doEditUpdates(Object(Revision), Object(User), Array)
#13 /usr/local/apache/common-local/php-1.22wmf16/includes/WikiPage.php(1594): WikiPage->doEditContent(Object(WikitextContent), 'Marked this ver...', 18, false, NULL)
#14 /usr/local/apache/common-local/php-1.22wmf16/extensions/Translate/tag/SpecialPageTranslation.php(653): WikiPage->doEdit('{{PD Help Page}...', 'Marked this ver...', 18)
#15 /usr/local/apache/common-local/php-1.22wmf16/extensions/Translate/tag/SpecialPageTranslation.php(150): SpecialPageTranslation->markForTranslation(Object(TranslatablePage), Array)
#16 /usr/local/apache/common-local/php-1.22wmf16/includes/SpecialPage.php(631): SpecialPageTranslation->execute(NULL)
#17 /usr/local/apache/common-local/php-1.22wmf16/includes/SpecialPageFactory.php(490): SpecialPage->run(NULL)
#18 /usr/local/apache/common-local/php-1.22wmf16/includes/Wiki.php(291): SpecialPageFactory::executePath(Object(Title), Object(RequestContext))
#19 /usr/local/apache/common-local/php-1.22wmf16/includes/Wiki.php(590): MediaWiki->performRequest()
#20 /usr/local/apache/common-local/php-1.22wmf16/includes/Wiki.php(459): MediaWiki->main()
#21 /usr/local/apache/common-local/php-1.22wmf16/index.php(55): MediaWiki->run()
#22 /usr/local/apache/common-local/w/index.php(3): require('/usr/local/apac...')
#23 {main}

Proposal: if we don't have a good fix for this by tomorrow we deploy a "fix" where we catch and log this (with stack trace if possible.) We could downgrade it from an immediate/release blocker if we've got that in place. Also, it'd be cool to log which page (and what revision) this is failing for.

We've pushed https://gerrit.wikimedia.org/r/#/c/83633/ which catches this condition and doesn't update the search index. Since it isn't crashing I'm lowering the priority on this. We'll still get to it because it means the index isn't updating.

We're seeing this again but in it's better, exception caught form:

Warning: CirrusSearch couldn't get parser output for Growth/status. Returning null text which should be skipped. [Called from
CirrusSearchTextSanitizer::getSantizedTextFromTitle in
/usr/local/apache/common-local/php-1.22wmf17/extensions/CirrusSearch/CirrusSearchTextSanitizer.php at line 41] in
/usr/local/apache/common-local/php-1.22wmf17/includes/debug/Debug.php on line 296

and

Warning: Search update called with false or null text for growth status. Ignoring search update.

Should be fixed by now as a side-effect of the refactoring in I5a717c254a6797436d5bebea460459dad09f6b89.