From: Timo Tijhof Date: Tue, 19 Mar 2019 03:01:43 +0000 (+0000) Subject: Revert "Split out new RefreshSecondaryDataUpdate class" X-Git-Tag: 1.34.0-rc.0~2474^2 X-Git-Url: http://git.cyclocoop.org/%22.htmlspecialchars%28%24url_syndic%29.%22?a=commitdiff_plain;h=6b7ddf9c9bfa7f651a50d462f2e4e918a9407dab;p=lhc%2Fweb%2Fwiklou.git Revert "Split out new RefreshSecondaryDataUpdate class" This reverts commits a1f7fd3adaa3, 0ef02cd018901. Bug: T218456 Change-Id: I9bbea3d13460ed44755d77fc61ff23fb906cf71e --- diff --git a/autoload.php b/autoload.php index 8e771a3939..4172ed3d5a 100644 --- a/autoload.php +++ b/autoload.php @@ -1215,7 +1215,6 @@ $wgAutoloadLocalClasses = [ 'RefreshImageMetadata' => __DIR__ . '/maintenance/refreshImageMetadata.php', 'RefreshLinks' => __DIR__ . '/maintenance/refreshLinks.php', 'RefreshLinksJob' => __DIR__ . '/includes/jobqueue/jobs/RefreshLinksJob.php', - 'RefreshSecondaryDataUpdate' => __DIR__ . '/includes/deferred/RefreshSecondaryDataUpdate.php', 'RegexlikeReplacer' => __DIR__ . '/includes/libs/replacers/RegexlikeReplacer.php', 'RemexStripTagHandler' => __DIR__ . '/includes/parser/RemexStripTagHandler.php', 'RemoveInvalidEmails' => __DIR__ . '/maintenance/removeInvalidEmails.php', diff --git a/includes/Storage/DerivedPageDataUpdater.php b/includes/Storage/DerivedPageDataUpdater.php index 8dedc70211..9ce12b4b13 100644 --- a/includes/Storage/DerivedPageDataUpdater.php +++ b/includes/Storage/DerivedPageDataUpdater.php @@ -24,7 +24,6 @@ namespace MediaWiki\Storage; use ApiStashEdit; use CategoryMembershipChangeJob; -use RefreshSecondaryDataUpdate; use Content; use ContentHandler; use DataUpdate; @@ -1591,31 +1590,14 @@ class DerivedPageDataUpdater implements IDBAccessObject { $update->setRevision( $legacyRevision ); $update->setTriggeringUser( $triggeringUser ); } - } - - if ( $options['defer'] === false ) { - foreach ( $updates as $update ) { - if ( $update instanceof DataUpdate && $options['transactionTicket'] !== null ) { + if ( $options['defer'] === false ) { + if ( $options['transactionTicket'] !== null ) { $update->setTransactionTicket( $options['transactionTicket'] ); } $update->doUpdate(); + } else { + DeferredUpdates::addUpdate( $update, $options['defer'] ); } - } else { - $cacheTime = $this->getCanonicalParserOutput()->getCacheTime(); - // Bundle all of the data updates into a single deferred update wrapper so that - // any failure will cause at most one refreshLinks job to be enqueued by - // DeferredUpdates::doUpdates(). This is hard to do when there are many separate - // updates that are not defined as being related. - $update = new RefreshSecondaryDataUpdate( - $this->wikiPage, - $updates, - $options, - $cacheTime, - $this->loadbalancerFactory->getLocalDomainID() - ); - $update->setRevision( $legacyRevision ); - $update->setTriggeringUser( $triggeringUser ); - DeferredUpdates::addUpdate( $update, $options['defer'] ); } } diff --git a/includes/deferred/DeferredUpdates.php b/includes/deferred/DeferredUpdates.php index a14b25c720..67b5490511 100644 --- a/includes/deferred/DeferredUpdates.php +++ b/includes/deferred/DeferredUpdates.php @@ -280,16 +280,6 @@ class DeferredUpdates { } MWExceptionHandler::rollbackMasterChangesAndLog( $e ); - // Try to push the update as a job so it can run later perhaps - if ( $mode !== 'enqueue' && $update instanceof EnqueueableDataUpdate ) { - try { - $spec = $update->getAsJobSpecification(); - JobQueueGroup::singleton( $spec['wiki'] )->push( $spec['job'] ); - } catch ( Exception $e ) { - MWExceptionHandler::rollbackMasterChangesAndLog( $e ); - } - } - // VW-style hack to work around T190178, so we can make sure // PageMetaDataUpdater doesn't throw exceptions. if ( defined( 'MW_PHPUNIT_TEST' ) ) { diff --git a/includes/deferred/LinksUpdate.php b/includes/deferred/LinksUpdate.php index 101a1e296b..7a31e26253 100644 --- a/includes/deferred/LinksUpdate.php +++ b/includes/deferred/LinksUpdate.php @@ -32,7 +32,7 @@ use Wikimedia\ScopedCallback; * * See docs/deferred.txt */ -class LinksUpdate extends DataUpdate { +class LinksUpdate extends DataUpdate implements EnqueueableDataUpdate { // @todo make members protected, but make sure extensions don't break /** @var int Page ID of the article linked from */ @@ -1187,4 +1187,39 @@ class LinksUpdate extends DataUpdate { return $this->db; } + + public function getAsJobSpecification() { + if ( $this->user ) { + $userInfo = [ + 'userId' => $this->user->getId(), + 'userName' => $this->user->getName(), + ]; + } else { + $userInfo = false; + } + + if ( $this->mRevision ) { + $triggeringRevisionId = $this->mRevision->getId(); + } else { + $triggeringRevisionId = false; + } + + return [ + 'wiki' => WikiMap::getWikiIdFromDbDomain( $this->getDB()->getDomainID() ), + 'job' => new JobSpecification( + 'refreshLinksPrioritized', + [ + // Reuse the parser cache if it was saved + 'rootJobTimestamp' => $this->mParserOutput->getCacheTime(), + 'useRecursiveLinksUpdate' => $this->mRecursive, + 'triggeringUser' => $userInfo, + 'triggeringRevisionId' => $triggeringRevisionId, + 'causeAction' => $this->getCauseAction(), + 'causeAgent' => $this->getCauseAgent() + ], + [ 'removeDuplicates' => true ], + $this->getTitle() + ) + ]; + } } diff --git a/includes/deferred/RefreshSecondaryDataUpdate.php b/includes/deferred/RefreshSecondaryDataUpdate.php deleted file mode 100644 index 8086a7050d..0000000000 --- a/includes/deferred/RefreshSecondaryDataUpdate.php +++ /dev/null @@ -1,117 +0,0 @@ -page = $page; - $this->updates = $updates; - $this->causeAction = $options['causeAction'] ?? 'unknown'; - $this->causeAgent = $options['causeAgent'] ?? 'unknown'; - $this->recursive = !empty( $options['recursive'] ); - $this->cacheTimestamp = $cacheTime; - $this->domain = $domain; - } - - public function doUpdate() { - foreach ( $this->updates as $update ) { - $update->doUpdate(); - } - } - - /** - * Set the revision corresponding to this LinksUpdate - * @param Revision $revision - */ - public function setRevision( Revision $revision ) { - $this->revision = $revision; - } - - /** - * Set the User who triggered this LinksUpdate - * @param User $user - */ - public function setTriggeringUser( User $user ) { - $this->user = $user; - } - - public function getAsJobSpecification() { - return [ - 'wiki' => WikiMap::getWikiIdFromDomain( $this->domain ), - 'job' => new JobSpecification( - 'refreshLinksPrioritized', - [ - // Reuse the parser cache if it was saved - 'rootJobTimestamp' => $this->cacheTimestamp, - 'useRecursiveLinksUpdate' => $this->recursive, - 'triggeringUser' => $this->user - ? [ - 'userId' => $this->user->getId(), - 'userName' => $this->user->getName() - ] - : false, - 'triggeringRevisionId' => $this->revision ? $this->revision->getId() : false, - 'causeAction' => $this->getCauseAction(), - 'causeAgent' => $this->getCauseAgent() - ], - [ 'removeDuplicates' => true ], - $this->page->getTitle() - ) - ]; - } -}