Daniel Kinzler has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/364205 )
Change subject: Use RefreshLinksJob instead of Title:invalidateCache
......................................................................
Use RefreshLinksJob instead of Title:invalidateCache
Bug: T164173
Change-Id: I3a59486808b699ad0f9463e2af56d69fd37f8bf7
---
M client/includes/Changes/ChangeHandler.php
M client/includes/Changes/PageUpdater.php
M client/includes/Changes/WikiPageUpdater.php
M client/tests/phpunit/includes/Changes/ChangeHandlerTest.php
M client/tests/phpunit/includes/Changes/MockPageUpdater.php
M client/tests/phpunit/includes/Changes/WikiPageUpdaterTest.php
6 files changed, 14 insertions(+), 86 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/05/364205/1
diff --git a/client/includes/Changes/ChangeHandler.php
b/client/includes/Changes/ChangeHandler.php
index 884c30e..fb66ce8 100644
--- a/client/includes/Changes/ChangeHandler.php
+++ b/client/includes/Changes/ChangeHandler.php
@@ -26,11 +26,6 @@
class ChangeHandler {
/**
- * The change requites any rendered version of the page to be purged
from the parser cache.
- */
- const PARSER_PURGE_ACTION = 'parser';
-
- /**
* The change requites a LinksUpdate job to be scheduled to update any
links
* associated with the page.
*/
@@ -183,28 +178,26 @@
$all = isset( $aspects[EntityUsage::ALL_USAGE] );
if ( isset( $aspects[EntityUsage::SITELINK_USAGE] ) || $all ) {
- $actions[self::LINKS_UPDATE_ACTION] = true;
-
// TODO: introduce an update action that updates just
the metadata
// in the cached ParserOutput, without re-parsing the
page!
- $actions[self::PARSER_PURGE_ACTION] = true;
+ $actions[self::LINKS_UPDATE_ACTION] = true;
}
if ( isset( $aspects[EntityUsage::LABEL_USAGE] ) || $all ) {
- $actions[self::PARSER_PURGE_ACTION] = true;
+ $actions[self::LINKS_UPDATE_ACTION] = true;
}
if ( isset( $aspects[EntityUsage::TITLE_USAGE] ) || $all ) {
- $actions[self::PARSER_PURGE_ACTION] = true;
+ $actions[self::LINKS_UPDATE_ACTION] = true;
}
if ( isset( $aspects[EntityUsage::OTHER_USAGE] ) || $all ) {
- $actions[self::PARSER_PURGE_ACTION] = true;
+ $actions[self::LINKS_UPDATE_ACTION] = true;
}
// Purge caches and inject log entries if we have reason
// to update the cached ParserOutput object in some way.
- if ( isset( $actions[self::PARSER_PURGE_ACTION] ) || isset(
$actions[self::LINKS_UPDATE_ACTION] ) ) {
+ if ( isset( $actions[self::LINKS_UPDATE_ACTION] ) ) {
$actions[self::WEB_PURGE_ACTION] = true;
$actions[self::RC_ENTRY_ACTION] = true;
$actions[self::HISTORY_ENTRY_ACTION] = true;
@@ -233,10 +226,6 @@
$titlesToUpdate = $this->getTitlesForPageIds( $pageIds );
switch ( $action ) {
- case self::PARSER_PURGE_ACTION:
- $this->updater->purgeParserCache(
$titlesToUpdate );
- break;
-
case self::WEB_PURGE_ACTION:
$this->updater->purgeWebCache( $titlesToUpdate
);
break;
diff --git a/client/includes/Changes/PageUpdater.php
b/client/includes/Changes/PageUpdater.php
index ec74351..391f122 100644
--- a/client/includes/Changes/PageUpdater.php
+++ b/client/includes/Changes/PageUpdater.php
@@ -17,13 +17,6 @@
interface PageUpdater {
/**
- * Invalidates local cached of the given pages.
- *
- * @param Title[] $titles The Titles of the pages to update
- */
- public function purgeParserCache( array $titles );
-
- /**
* Invalidates external web cached of the given pages.
*
* @param Title[] $titles The Titles of the pages to update
diff --git a/client/includes/Changes/WikiPageUpdater.php
b/client/includes/Changes/WikiPageUpdater.php
index 7293723..69c6876 100644
--- a/client/includes/Changes/WikiPageUpdater.php
+++ b/client/includes/Changes/WikiPageUpdater.php
@@ -95,22 +95,6 @@
}
/**
- * Invalidates local cached of the given pages.
- *
- * @param Title[] $titles The Titles of the pages to update
- */
- public function purgeParserCache( array $titles ) {
- /* @var Title $title */
- foreach ( $titles as $title ) {
- wfDebugLog( __CLASS__, __FUNCTION__ . ": purging page "
. $title->getText() );
-
- // TODO: This queues a database update for each title
separately. Batch it.
- $title->invalidateCache();
- }
- $this->incrementStats( 'ParserCache', count( $titles ) );
- }
-
- /**
* Invalidates external web cached of the given pages.
*
* @param Title[] $titles The Titles of the pages to update
@@ -145,6 +129,7 @@
// NOTE: nominal title, will be ignored because the
'pages' parameter is set.
$title = reset( $batch );
+ // TODO: add root job timestamp?
$jobs[] = new RefreshLinksJob(
$title,
[ 'pages' =>
$this->getPageParamForRefreshLinksJob( $batch ) ]
diff --git a/client/tests/phpunit/includes/Changes/ChangeHandlerTest.php
b/client/tests/phpunit/includes/Changes/ChangeHandlerTest.php
index ed5d00c..6b97458 100644
--- a/client/tests/phpunit/includes/Changes/ChangeHandlerTest.php
+++ b/client/tests/phpunit/includes/Changes/ChangeHandlerTest.php
@@ -189,35 +189,32 @@
],
'sitelink usage' => [
[ EntityUsage::SITELINK_USAGE ],
- [ ChangeHandler::LINKS_UPDATE_ACTION,
ChangeHandler::PARSER_PURGE_ACTION,
+ [ ChangeHandler::LINKS_UPDATE_ACTION,
ChangeHandler::WEB_PURGE_ACTION,
ChangeHandler::RC_ENTRY_ACTION ],
],
'label usage' => [
[ EntityUsage::LABEL_USAGE ],
- [ ChangeHandler::PARSER_PURGE_ACTION,
ChangeHandler::WEB_PURGE_ACTION,
+ [ ChangeHandler::LINKS_UPDATE_ACTION,
ChangeHandler::WEB_PURGE_ACTION,
ChangeHandler::RC_ENTRY_ACTION ],
- [ ChangeHandler::LINKS_UPDATE_ACTION ]
],
'title usage' => [
[ EntityUsage::TITLE_USAGE ],
- [ ChangeHandler::PARSER_PURGE_ACTION,
ChangeHandler::WEB_PURGE_ACTION,
+ [ ChangeHandler::LINKS_UPDATE_ACTION,
ChangeHandler::WEB_PURGE_ACTION,
ChangeHandler::RC_ENTRY_ACTION ],
- [ ChangeHandler::LINKS_UPDATE_ACTION ]
],
'other usage' => [
[ EntityUsage::OTHER_USAGE ],
- [ ChangeHandler::PARSER_PURGE_ACTION,
ChangeHandler::WEB_PURGE_ACTION,
+ [ ChangeHandler::LINKS_UPDATE_ACTION,
ChangeHandler::WEB_PURGE_ACTION,
ChangeHandler::RC_ENTRY_ACTION ],
- [ ChangeHandler::LINKS_UPDATE_ACTION ]
],
'all usage' => [
[ EntityUsage::ALL_USAGE ],
- [ ChangeHandler::PARSER_PURGE_ACTION,
ChangeHandler::WEB_PURGE_ACTION,
+ [ ChangeHandler::LINKS_UPDATE_ACTION,
ChangeHandler::WEB_PURGE_ACTION,
ChangeHandler::RC_ENTRY_ACTION ],
],
'sitelink and other usage (does links update)' => [
[ EntityUsage::SITELINK_USAGE,
EntityUsage::OTHER_USAGE ],
- [ ChangeHandler::LINKS_UPDATE_ACTION,
ChangeHandler::PARSER_PURGE_ACTION,
+ [ ChangeHandler::LINKS_UPDATE_ACTION,
ChangeHandler::WEB_PURGE_ACTION,
ChangeHandler::RC_ENTRY_ACTION ],
],
];
@@ -390,42 +387,36 @@
$userEmmy2 = Title::newFromText( 'User:Emmy2'
)->getPrefixedText();
$empty = [
- 'purgeParserCache' => [],
'scheduleRefreshLinks' => [],
'purgeWebCache' => [],
'injectRCRecord' => [],
];
$emmy2PurgeParser = [
- 'purgeParserCache' => [ 'Emmy2' => true ],
- 'scheduleRefreshLinks' => [],
+ 'scheduleRefreshLinks' => [ 'Emmy2' => true ],
'purgeWebCache' => [ 'Emmy2' => true ],
'injectRCRecord' => [ 'Emmy2' => true ],
];
$userEmmy2PurgeParser = [
- 'purgeParserCache' => [ $userEmmy2 => true ],
- 'scheduleRefreshLinks' => [],
+ 'scheduleRefreshLinks' => [ $userEmmy2 => true ],
'purgeWebCache' => [ $userEmmy2 => true ],
'injectRCRecord' => [ $userEmmy2 => true ],
];
$emmyUpdateLinks = [
- 'purgeParserCache' => [ 'Emmy' => true ],
'scheduleRefreshLinks' => [ 'Emmy' => true ],
'purgeWebCache' => [ 'Emmy' => true ],
'injectRCRecord' => [ 'Emmy' => true ],
];
$emmy2UpdateLinks = [
- 'purgeParserCache' => [ 'Emmy2' => true ],
'scheduleRefreshLinks' => [ 'Emmy2' => true ],
'purgeWebCache' => [ 'Emmy2' => true ],
'injectRCRecord' => [ 'Emmy2' => true ],
];
$emmy2UpdateAll = [
- 'purgeParserCache' => [ 'Emmy2' => true ],
'scheduleRefreshLinks' => [ 'Emmy2' => true ],
'purgeWebCache' => [ 'Emmy2' => true ],
'injectRCRecord' => [ 'Emmy2' => true ],
@@ -516,7 +507,6 @@
$changes['change-enwiki-sitelink'],
[ 'q100' => [ 'enwiki' => 'Emmy' ], 'q200' => [
'enwiki' => 'Emmy2' ] ],
[
- 'purgeParserCache' => [ 'Emmy' => true,
'Emmy2' => true ],
'scheduleRefreshLinks' => [ 'Emmy' =>
true, 'Emmy2' => true ],
'purgeWebCache' => [ 'Emmy' => true,
'Emmy2' => true ],
'injectRCRecord' => [ 'Emmy' => true,
'Emmy2' => true ],
diff --git a/client/tests/phpunit/includes/Changes/MockPageUpdater.php
b/client/tests/phpunit/includes/Changes/MockPageUpdater.php
index 34f7047..02a7028 100644
--- a/client/tests/phpunit/includes/Changes/MockPageUpdater.php
+++ b/client/tests/phpunit/includes/Changes/MockPageUpdater.php
@@ -18,21 +18,10 @@
class MockPageUpdater implements PageUpdater {
private $updates = [
- 'purgeParserCache' => [],
'purgeWebCache' => [],
'scheduleRefreshLinks' => [],
'injectRCRecord' => [],
];
-
- /**
- * @param Title[] $titles
- */
- public function purgeParserCache( array $titles ) {
- foreach ( $titles as $title ) {
- $key = $title->getPrefixedDBkey();
- $this->updates['purgeParserCache'][ $key ] = $title;
- }
- }
/**
* @param Title[] $titles
diff --git a/client/tests/phpunit/includes/Changes/WikiPageUpdaterTest.php
b/client/tests/phpunit/includes/Changes/WikiPageUpdaterTest.php
index 407cd98..5cacbb0 100644
--- a/client/tests/phpunit/includes/Changes/WikiPageUpdaterTest.php
+++ b/client/tests/phpunit/includes/Changes/WikiPageUpdaterTest.php
@@ -138,24 +138,6 @@
return $LBFactory;
}
- public function testPurgeParserCache() {
- $updater = new WikiPageUpdater(
- $this->getJobQueueGroupMock(),
- $this->getRCFactoryMock(),
- $this->getLBFactoryMock(),
- $this->getRCDupeDetectorMock()
- );
-
- $title = $this->getTitleMock( 'Foo' );
-
- $title->expects( $this->once() )
- ->method( 'invalidateCache' );
-
- $updater->purgeParserCache( [
- $title,
- ] );
- }
-
public function testPurgeWebCache() {
$updater = new WikiPageUpdater(
$this->getJobQueueGroupMock(),
--
To view, visit https://gerrit.wikimedia.org/r/364205
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3a59486808b699ad0f9463e2af56d69fd37f8bf7
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Daniel Kinzler <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits