Completely defer EditPage::updateWatchlist
This should reduce their profile time shown on xenon Change-Id: I8e92de22755b592cc7b2d3fab36cff2761ab2bb7
This commit is contained in:
parent
d3aee2413e
commit
bde1ab74c0
1 changed files with 14 additions and 14 deletions
|
|
@ -2041,7 +2041,7 @@ class EditPage {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param Title $title
|
||||
* @param User $user
|
||||
* @param string $oldModel
|
||||
* @param string $newModel
|
||||
* @param string $reason
|
||||
|
|
@ -2059,26 +2059,26 @@ class EditPage {
|
|||
$log->publish( $logid );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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 );
|
||||
} );
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue