From bc3247a83f0c2709905a0534a55d3860f14250f4 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Wed, 15 Jul 2015 16:47:46 -0700 Subject: [PATCH] Use deferred updates in place of $wgActivityUpdatesUseJobQueue * This is simpler and does not require custom queue loops Bug: T91284 Change-Id: Icb8b6aaeb496a4ff3cd3a7e20cdbea0c7dabd677 --- includes/DefaultSettings.php | 9 --------- includes/WatchedItem.php | 28 +++++++++++++--------------- 2 files changed, 13 insertions(+), 24 deletions(-) diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 6050ba7bc6..70ae4682de 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -1623,15 +1623,6 @@ $wgEnotifMaxRecips = 500; */ $wgEnotifUseJobQ = false; -/** - * Use the job queue for user activity updates like updating "last visited" - * fields for email notifications of page changes. This should only be enabled - * if the jobs have a dedicated runner to avoid update lag. - * - * @since 1.26 - */ -$wgActivityUpdatesUseJobQueue = false; - /** * Use real name instead of username in e-mail "from" field. */ diff --git a/includes/WatchedItem.php b/includes/WatchedItem.php index 73b0b937b0..adee1264a3 100644 --- a/includes/WatchedItem.php +++ b/includes/WatchedItem.php @@ -224,8 +224,6 @@ class WatchedItem { public function resetNotificationTimestamp( $force = '', $oldid = 0, $mode = self::IMMEDIATE ) { - global $wgActivityUpdatesUseJobQueue; - // Only loggedin user can have a watchlist if ( wfReadOnly() || $this->mUser->isAnon() || !$this->isAllowed( 'editmywatchlist' ) ) { return; @@ -275,20 +273,20 @@ class WatchedItem { } // If the page is watched by the user (or may be watched), update the timestamp - if ( $mode === self::DEFERRED && $wgActivityUpdatesUseJobQueue ) { - JobQueueGroup::singleton()->push( - EnqueueJob::newFromLocalJobs( new JobSpecification( - 'activityUpdateJob', - array( - 'type' => 'updateWatchlistNotification', - 'userid' => $this->getUserId(), - 'notifTime' => $notificationTimestamp, - 'curTime' => time() - ), - array( 'removeDuplicates' => true ), - $title - ) ) + if ( $mode === self::DEFERRED ) { + $job = new ActivityUpdateJob( + $title, + array( + 'type' => 'updateWatchlistNotification', + 'userid' => $this->getUserId(), + 'notifTime' => $notificationTimestamp, + 'curTime' => time() + ) ); + // Try to run this post-send + DeferredUpdates::addCallableUpdate( function() use ( $job ) { + $job->run(); + } ); } else { $dbw = wfGetDB( DB_MASTER ); $dbw->update( 'watchlist', -- 2.20.1