Use deferred updates in place of $wgActivityUpdatesUseJobQueue
authorAaron Schulz <aschulz@wikimedia.org>
Wed, 15 Jul 2015 23:47:46 +0000 (16:47 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Wed, 15 Jul 2015 23:52:55 +0000 (23:52 +0000)
* This is simpler and does not require custom queue loops

Bug: T91284
Change-Id: Icb8b6aaeb496a4ff3cd3a7e20cdbea0c7dabd677

includes/DefaultSettings.php
includes/WatchedItem.php

index 6050ba7..70ae468 100644 (file)
@@ -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.
  */
index 73b0b93..adee126 100644 (file)
@@ -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',