Add null check in WikiImporter
authorThis, that and the other <at.light@live.com.au>
Sun, 29 Mar 2015 09:30:15 +0000 (20:30 +1100)
committerTTO <at.light@live.com.au>
Mon, 30 Mar 2015 19:50:59 +0000 (19:50 +0000)
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

index de453b5..06355ed 100644 (file)
@@ -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();