Page MenuHomePhabricator

Fatal error: Call to a member function getBits() on a non-object in SpecialRevisiondelete.php on line 166
Closed, ResolvedPublic

Description

happens on test.wikidata, but presumably not on wikipedia / wikidata yet.

Fatal error: Call to a member function getBits() on a non-object at /usr/local/apache/common-local/php-1.24wmf15/includes/specials/SpecialRevisiondelete.php on line 166

URL: http://test.wikidata.org/w/index.php?title=Q22&action=revisiondelete&ids%5B7062%5D=1

Backtrace:
#0 /usr/local/apache/common-local/php-1.24wmf15/includes/specials/SpecialRevisiondelete.php(166): SpecialRevisionDelete::execute()
#1 /usr/local/apache/common-local/php-1.24wmf15/includes/specialpage/SpecialPage.php(382): SpecialRevisionDelete->execute('')
#2 /usr/local/apache/common-local/php-1.24wmf15/includes/actions/RevisiondeleteAction.php(53): SpecialPage->run('')
#3 /usr/local/apache/common-local/php-1.24wmf15/includes/MediaWiki.php(431): RevisiondeleteAction->show()
#4 /usr/local/apache/common-local/php-1.24wmf15/includes/MediaWiki.php(295): MediaWiki->performAction(Object(Article), Object(Title))


Version: unspecified
Severity: normal

Details

Reference
bz68566

Event Timeline

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

Line 166:

		$bitfield = $list->current()->getBits();

/**

  • Get the current list item, or false if we are at the end
  • @return Revision
	 */

public function current() {

		return $this->current;

}

Needs to deal with current() === false, and probably update the docs too

the query for the revision is looking in the archive table while the revision is not there (it's in the revision table)

looked again and for querying the revision table, it's doing:

SELECT rev_id,rev_page,rev_text_id,rev_timestamp,rev_comment,rev_user_text,rev_user,rev_minor_edit,rev_deleted,rev_len,rev_parent_id,rev_sha1,rev_content_format,rev_content_model,user_name FROM revision INNER JOIN page ON ((page_id = rev_page)) LEFT JOIN user ON ((rev_user != 0) AND (user_id = rev_user)) WHERE rev_page = '0' AND rev_id = '3481' ORDER BY rev_id DESC;

rev_page is not 0 for any pages in my revision table.

and the revision is not found in the archive table.

the title passed to RevDelRevisionList appears to be Special:RevisionDelete, hence rev_page = 0

Change 149325 had a related patch set uploaded by Aude:
Move adjustment of revision delete target in SpecialRevisiondelete to fix fatal

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

Change 149325 merged by jenkins-bot:
Move adjustment of revision delete target in SpecialRevisiondelete to fix fatal

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

Was this backported? I just ran into it on testwiki.

Change 149783 had a related patch set uploaded by Legoktm:
Move adjustment of revision delete target in SpecialRevisiondelete to fix fatal

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

(In reply to Kunal Mehta (Legoktm) from comment #8)

Was this backported? I just ran into it on testwiki.

hoo has put this on the SWAT list for tomorrow already, thanks! I uploaded a cherry-pick for it. Re-opening until it's deployed.

Change 149783 merged by jenkins-bot:
Move adjustment of revision delete target in SpecialRevisiondelete to fix fatal

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