41 public function run() {
46 $userId = $this->params[
'userId'];
47 $maxWatchlistId = $this->params[
'maxWatchlistId'];
49 $dbw = $dbProvider->getPrimaryDatabase();
50 $dbr = $dbProvider->getReplicaDatabase();
51 $ticket = $dbProvider->getEmptyTransactionTicket( __METHOD__ );
54 $lockKey =
"ClearUserWatchlist:$userId";
57 $this->
setLastError(
"Could not acquire lock '$lockKey'" );
63 $dbProvider->commitAndWaitForReplication( __METHOD__, $ticket );
65 $watchlistIds = $dbr->newSelectQueryBuilder()
68 ->where( [
'wl_user' => $userId ] )
69 ->andWhere( $dbr->expr(
'wl_id',
'<=', $maxWatchlistId ) )
71 ->caller( __METHOD__ )->fetchFieldValues();
72 if ( !$watchlistIds ) {
76 $dbw->newDeleteQueryBuilder()
77 ->deleteFrom(
'watchlist' )
78 ->where( [
'wl_id' => $watchlistIds ] )
79 ->caller( __METHOD__ )->execute();
82 $dbw->newDeleteQueryBuilder()
83 ->deleteFrom(
'watchlist_expiry' )
84 ->where( [
'we_item' => $watchlistIds ] )
85 ->caller( __METHOD__ )->execute();
89 $dbProvider->commitAndWaitForReplication( __METHOD__, $ticket );
92 if ( count( $watchlistIds ) === (
int)$batchSize ) {