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 <daniel.kinz...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits