dépôts
/
lhc
/
web
/
wiklou.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
d3aee24
)
Completely defer EditPage::updateWatchlist
author
Aaron Schulz
<aschulz@wikimedia.org>
Tue, 27 Oct 2015 04:10:54 +0000
(21:10 -0700)
committer
Aaron Schulz
<aschulz@wikimedia.org>
Tue, 27 Oct 2015 04:10:54 +0000
(21:10 -0700)
This should reduce their profile time shown on xenon
Change-Id: I8e92de22755b592cc7b2d3fab36cff2761ab2bb7
includes/EditPage.php
patch
|
blob
|
history
diff --git
a/includes/EditPage.php
b/includes/EditPage.php
index
81f35f9
..
2bddc3e
100644
(file)
--- a/
includes/EditPage.php
+++ b/
includes/EditPage.php
@@
-2041,7
+2041,7
@@
class EditPage {
}
/**
}
/**
- * @param
Title $title
+ * @param
User $user
* @param string $oldModel
* @param string $newModel
* @param string $reason
* @param string $oldModel
* @param string $newModel
* @param string $reason
@@
-2059,26
+2059,26
@@
class EditPage {
$log->publish( $logid );
}
$log->publish( $logid );
}
-
/**
* Register the change of watch status
*/
protected function updateWatchlist() {
global $wgUser;
/**
* Register the change of watch status
*/
protected function updateWatchlist() {
global $wgUser;
- if ( $wgUser->isLoggedIn()
- && $this->watchthis != $wgUser->isWatched( $this->mTitle, WatchedItem::IGNORE_USER_RIGHTS )
- ) {
- $fname = __METHOD__;
- $title = $this->mTitle;
- $watch = $this->watchthis;
-
- // Do this in its own transaction to reduce contention...
- $dbw = wfGetDB( DB_MASTER );
- $dbw->onTransactionIdle( function () use ( $dbw, $title, $watch, $wgUser, $fname ) {
- WatchAction::doWatchOrUnwatch( $watch, $title, $wgUser );
- } );
+ if ( !$wgUser->isLoggedIn() ) {
+ return;
}
}
+
+ $user = $wgUser;
+ $title = $this->mTitle;
+ $watch = $this->watchthis;
+ // Do this in its own transaction to reduce contention...
+ DeferredUpdates::addCallableUpdate( function () use ( $user, $title, $watch ) {
+ if ( $watch == $user->isWatched( $title, WatchedItem::IGNORE_USER_RIGHTS ) ) {
+ return; // nothing to change
+ }
+ WatchAction::doWatchOrUnwatch( $watch, $title, $user );
+ } );
}
/**
}
/**