Do an HTMLCacheUpdate of templatelinks on page creation
authorBrad Jorsch <bjorsch@wikimedia.org>
Tue, 18 Apr 2017 16:40:50 +0000 (12:40 -0400)
committerBrad Jorsch <bjorsch@wikimedia.org>
Tue, 18 Apr 2017 16:42:55 +0000 (12:42 -0400)
When a page is created, anything that's trying to transclude that page
needs to have an HTMLCacheUpdate run on it. But that's not currently
happening.

Normal template transclusion happens to get updates only because
transclusion of a nonexistent template is rendered as a link to that
template, which registers a pagelink, and pagelinks *are* being updated
on page creation to cause redlinks to turn blue.

Change-Id: I18b8cfdeedc53f8fdb1e758a6fca1cd23d9574f8

includes/page/WikiPage.php

index 82c32da..a687900 100644 (file)
@@ -3252,6 +3252,9 @@ class WikiPage implements Page, IDBAccessObject {
 
                MediaWikiServices::getInstance()->getLinkCache()->invalidateTitle( $title );
 
+               // Invalidate caches of articles which include this page
+               DeferredUpdates::addUpdate( new HTMLCacheUpdate( $title, 'templatelinks' ) );
+
                if ( $title->getNamespace() == NS_CATEGORY ) {
                        // Load the Category object, which will schedule a job to create
                        // the category table row if necessary. Checking a replica DB is ok