Last modified: 2013-04-13 07:21:20 UTC
Trying to move any page to a title that didn't previously exist causes an exception in 1.21wmf12.
I captured the following backtrace from nlwikimedia, using a debugging hack that includes $title->getPrefixedText() (which turned out to be the title the page was being moved to) in the exception message. I could also reproduce this my trying to move [[Test]] to [[Test2]] on test2.wikipedia.org .
2013-03-21 01:51:52 mw1055 nlwikimedia: [458e1031] /w/index.php?title=Speciaal:PaginaHernoemen&action=submit Exception from line 71 of /usr/local/apache/common-local/php-1.21wmf12/includes/LinksUpdate.php: The Title object for Wikimedia:De kroeg/Archief/2007 did not provide an article ID. Perhaps the page doesn't exist?
#0 /usr/local/apache/common-local/php-1.21wmf12/includes/parser/ParserOutput.php(474): LinksUpdate->__construct(Object(Title), Object(ParserOutput), true)
#1 /usr/local/apache/common-local/php-1.21wmf12/includes/content/AbstractContent.php(242): ParserOutput->getSecondaryDataUpdates(Object(Title), true)
#2 /usr/local/apache/common-local/php-1.21wmf12/includes/WikiPage.php(2066): AbstractContent->getSecondaryDataUpdates(Object(Title), NULL, true, Object(ParserOutput))
#3 /usr/local/apache/common-local/php-1.21wmf12/includes/Title.php(3847): WikiPage->doEditUpdates(Object(Revision), Object(User), Array)
#4 /usr/local/apache/common-local/php-1.21wmf12/includes/Title.php(3683): Title->moveToInternal(Object(Title), '', false)
#5 /usr/local/apache/common-local/php-1.21wmf12/includes/specials/SpecialMovepage.php(462): Title->moveTo(Object(Title), true, '', false)
#6 /usr/local/apache/common-local/php-1.21wmf12/includes/specials/SpecialMovepage.php(97): MovePageForm->doSubmit()
#7 /usr/local/apache/common-local/php-1.21wmf12/includes/SpecialPage.php(613): MovePageForm->execute(NULL)
#8 /usr/local/apache/common-local/php-1.21wmf12/includes/SpecialPageFactory.php(487): SpecialPage->run(NULL)
#9 /usr/local/apache/common-local/php-1.21wmf12/includes/Wiki.php(291): SpecialPageFactory::executePath(Object(Title), Object(RequestContext))
#10 /usr/local/apache/common-local/php-1.21wmf12/includes/Wiki.php(565): MediaWiki->performRequest()
#11 /usr/local/apache/common-local/php-1.21wmf12/includes/Wiki.php(458): MediaWiki->main()
#12 /usr/local/apache/common-local/php-1.21wmf12/index.php(59): MediaWiki->run()
#13 /usr/local/apache/common-local/live-1.5/index.php(3): require('/usr/local/apac...')
If this isn't able to be fixed by tomorrow afternoon, let's roll back the wmf12 deploy.
Tim: Since you're awake first, can you debug and update us here, please?
Chris: Is this functionality covered in our test suite? If not, let's put it in the backlog.
On test2.wikipedia.org, moved "Title A" to "Title B". "Title A" now has an incorrect page_latest, an incorrect page_len, and an incorrect page_is_redirect:
mysql> select * from page where page_title = 'Title_A' and page_namespace = 0\G
*************************** 1. row ***************************
1 row in set (0.00 sec)
*** Bug 46403 has been marked as a duplicate of this bug. ***
This is most likely due to Iea16d672 (thanks Robla for pointing me in this direction).
Title::moveToInternal() moves the page and then calls $nt->resetArticleID($oldid) to reset the article ID. Then a new WikiPage is constructed with the title $nt, and updates are called on this WikiPage object. Before Iea16d672, $newpage->getId() would have returned the new ID due to it being stored in $nt->mArticleId, but after Iea16d672, $newpage->getId() calls $newpage->loadPageData(), which fetches the page_id from the *slave* database. Of course, it is not in the slave yet, since the update query and the select query are separated by microseconds.
It is easy to reproduce locally with $wgAllDBsAreLocalhost = true, with zero master load.
(In reply to comment #5)
> It is easy to reproduce locally with $wgAllDBsAreLocalhost = true, with zero
> master load.
That is to say, the update transaction is still open, so even a separate master connection does not see the new page_id. It's not necessary to actually have replication to see the issue.
I have rolled back all wikis to MW 1.21wmf11 and thus will lower the priority.
Also see https://gerrit.wikimedia.org/r/#/c/55017/
*** Bug 46411 has been marked as a duplicate of this bug. ***
Roan wrote <https://gerrit.wikimedia.org/r/55086>, which was self-merged and then deployed by Chris S. to test2.wikipedia.org (cf. <https://wikitech.wikimedia.org/w/index.php?title=Server_Admin_Log&diff=64335&oldid=64333&diffonly=1>).
One more change needed: https://gerrit.wikimedia.org/r/#/c/55218/
see also https://bugzilla.wikimedia.org/46427
(In reply to comment #10)
> One more change needed: https://gerrit.wikimedia.org/r/#/c/55218/
(In reply to comment #11)
> see also https://bugzilla.wikimedia.org/46427
That bug is still present.
I don't get this error, but some people are still getting "LinkCache doesn't know about this title".
Fixed with a revert in https://gerrit.wikimedia.org/r/#/c/55391/.