It seems that when two simultaneous imports of the same page are started,
we get into the situation where $pageId is 0 (or at least something that
is transformed to 0 when inserted into the DB).
I can't reproduce this locally, so I can't tell you *why* this is
happening. But what is important is to stop it from happening.
Bug: T18674
Change-Id: I79406a1ef8e5db9a31f029438f8132ef590216fe
$page = WikiPage::factory( $this->title );
$page->loadPageData( 'fromdbmaster' );
if ( !$page->exists() ) {
$page = WikiPage::factory( $this->title );
$page->loadPageData( 'fromdbmaster' );
if ( !$page->exists() ) {
- # must create the page...
+ // must create the page...
$pageId = $page->insertOn( $dbw );
$created = true;
$oldcountable = null;
$pageId = $page->insertOn( $dbw );
$created = true;
$oldcountable = null;
+ if ( !$pageId ) {
+ // This seems to happen if two clients simultaneously try to import the
+ // same page
+ wfDebug( __METHOD__ . ': got invalid $pageId when importing revision of [[' .
+ $this->title->getPrefixedText() . ']], timestamp ' . $this->timestamp . "\n" );
+ return false;
+ }
+
// Select previous version to make size diffs correct
// Select previous version to make size diffs correct
+ // @todo This assumes that multiple revisions of the same page are imported
+ // in order from oldest to newest.
$prevId = $dbw->selectField( 'revision', 'rev_id',
array(
'rev_page' => $pageId,
$prevId = $dbw->selectField( 'revision', 'rev_id',
array(
'rev_page' => $pageId,