From 45788085afaa7be7b606c08ccc3cba06d224496b Mon Sep 17 00:00:00 2001 From: "This, that and the other" Date: Sun, 29 Mar 2015 20:30:15 +1100 Subject: [PATCH] Add null check in WikiImporter This is my code, and it caused fatals in production whenever anyone tried to import anything :( This should get rid of the fatals, but obviously this won't fix the underlying issue of WikiPage::getContent() sometimes returning null. See the task for more info on that issue. Bug: T94325 Change-Id: I68ce2288d7d209733bceffe42e1876c7afcd73d3 --- includes/Import.php | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/includes/Import.php b/includes/Import.php index de453b5a5f..06355ed11c 100644 --- a/includes/Import.php +++ b/includes/Import.php @@ -375,14 +375,19 @@ class WikiImporter { $page = WikiPage::factory( $title ); $page->loadPageData( 'fromdbmaster' ); $content = $page->getContent(); - $editInfo = $page->prepareContentForEdit( $content ); - $countKey = 'title_' . $title->getPrefixedText(); - $countable = $page->isCountable( $editInfo ); - if ( array_key_exists( $countKey, $this->countableCache ) && - $countable != $this->countableCache[ $countKey ] ) { - DeferredUpdates::addUpdate( SiteStatsUpdate::factory( array( - 'articles' => ( (int)$countable - (int)$this->countableCache[ $countKey ] ) - ) ) ); + if ( $content === null ) { + wfDebug( __METHOD__ . ': Skipping article count adjustment for ' . $title . + ' because WikiPage::getContent() returned null' ); + } else { + $editInfo = $page->prepareContentForEdit( $content ); + $countKey = 'title_' . $title->getPrefixedText(); + $countable = $page->isCountable( $editInfo ); + if ( array_key_exists( $countKey, $this->countableCache ) && + $countable != $this->countableCache[ $countKey ] ) { + DeferredUpdates::addUpdate( SiteStatsUpdate::factory( array( + 'articles' => ( (int)$countable - (int)$this->countableCache[ $countKey ] ) + ) ) ); + } } $args = func_get_args(); -- 2.20.1