Page MenuHomePhabricator

CirrusSearch fatal whilst importing
Closed, ResolvedPublic

Description

[2014-07-29 18:20:16] Catchable fatal error: Argument 1 passed to WikiPage::factory() must be an instance of Title, null given, called in /usr/local/apache/common-local/php-1.24wmf14/extensions/CirrusSearch/includes/Hooks.php on line 188 and defined at /usr/local/apache/common-local/php-1.24wmf14/includes/page/WikiPage.php on line 112
Server: mw1174
Method: POST
URL: http://bh.wikipedia.org/w/index.php?title=%E0%A4%B5%E0%A4%BF%E0%A4%B6%E0%A5%87%E0%A4%B7:Import&action=submit
Backtrace:
#0 /usr/local/apache/common-local/php-1.24wmf14/includes/page/WikiPage.php(112): WikiPage::factory()
#1 /usr/local/apache/common-local/php-1.24wmf14/extensions/CirrusSearch/includes/Hooks.php(188): WikiPage::factory(NULL)
#2 [internal function]: CirrusSearch\Hooks::onAfterImportPage(NULL, NULL, 0, 0, Array)
#3 /usr/local/apache/common-local/php-1.24wmf14/includes/Hooks.php(206): call_user_func_array('CirrusSearch\Ho...', Array)
#4 /usr/local/apache/common-local/php-1.24wmf14/includes/GlobalFunctions.php(4051): Hooks::run('AfterImportPage', Array, NULL)
#5 /usr/local/apache/common-local/php-1.24wmf14/includes/Import.php(323): wfRunHooks('AfterImportPage', Array)
#6 [internal function]: WikiImporter->finishImportPage(NULL, NULL, 0, 0, Array)
#7 /usr/local/apache/common-local/php-1.24wmf14/includes/specials/SpecialImport.php(464): call_user_func_array(Array, Array)
#8 [internal function]: ImportReporter->reportPage(NULL, NULL, 0, 0, Array)
#9 /usr/local/apache/common-local/php-1.24wmf14/includes/Import.php(364): call_user_func_array(Array, Array)
#10 /usr/local/apache/common-local/php-1.24wmf14/includes/Import.php(666): WikiImporter->pageOutCallback(NULL, NULL, 0, 0, Array)
#11 /usr/local/apache/common-local/php-1.24wmf14/includes/Import.php(507): WikiImporter->handlePage()
#12 /usr/local/apache/common-local/php-1.24wmf14/includes/specials/SpecialImport.php(179): WikiImporter->doImport()
#13 /usr/local/apache/common-local/php-1.24wmf14/includes/specials/SpecialImport.php(85): SpecialImport->doImport()
#14 /usr/local/apache/common-local/php-1.24wmf14/includes/specialpage/SpecialPage.php(382): SpecialImport->execute(NULL)
#15 /usr/local/apache/common-local/php-1.24wmf14/includes/specialpage/SpecialPageFactory.php(515): SpecialPage->run(NULL)
#16 /usr/local/apache/common-local/php-1.24wmf14/includes/MediaWiki.php(288): SpecialPageFactory::executePath(Object(Title), Object(RequestContext))
#17 /usr/local/apache/common-local/php-1.24wmf14/includes/MediaWiki.php(603): MediaWiki->performRequest()
#18 /usr/local/apache/common-local/php-1.24wmf14/includes/MediaWiki.php(452): MediaWiki->main()
#19 /usr/local/apache/common-local/php-1.24wmf14/index.php(46): MediaWiki->run()


Version: unspecified
Severity: normal

Details

Reference
bz68814

Event Timeline

bzimport raised the priority of this task from to Needs Triage.Nov 22 2014, 3:33 AM
bzimport added a project: CirrusSearch.
bzimport set Reference to bz68814.
bzimport added a subscriber: Unknown Object (MLST).

The relevant code is:
public static function onAfterImportPage( $title ) {
...

				array( WikiPage::factory( $title ) ),

...

So we're getting onAfterImportPage called with null. I'll add a guard but that seems like something is broken on the calling path, not Cirrus.

Change 150289 had a related patch set uploaded by Manybubbles:
Catch null titles in import hook

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

Change 150289 merged by jenkins-bot:
Catch null titles in import hook

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

(In reply to Nik Everett from comment #1)

So we're getting onAfterImportPage called with null. I'll add a guard but
that seems like something is broken on the calling path, not Cirrus.

I guess I should file a core bug about it...

I'm always reticent to change things like this in core in case someone relies on the weird behavior.