47 public function run() {
48 $services = MediaWikiServices::getInstance();
49 $lbFactory =
$services->getDBLoadBalancerFactory();
50 $rowsPerQuery =
$services->getMainConfig()->get(
'UpdateRowsPerQuery' );
52 $dbw = $lbFactory->getMainLB()->getConnection(
DB_MASTER );
53 $ticket = $lbFactory->getEmptyTransactionTicket( __METHOD__ );
55 $asOfTimes = array_unique( $dbw->selectFieldValues(
57 'wl_notificationtimestamp',
58 [
'wl_user' => $this->params[
'userId'],
'wl_notificationtimestamp IS NOT NULL' ],
60 [
'ORDER BY' =>
'wl_notificationtimestamp DESC' ]
63 foreach ( array_chunk( $asOfTimes, $rowsPerQuery ) as $asOfTimeBatch ) {
66 [
'wl_notificationtimestamp' =>
null ],
68 'wl_user' => $this->params[
'userId'],
69 'wl_notificationtimestamp' => $asOfTimeBatch,
71 'wl_notificationtimestamp < ' .
72 $dbw->addQuotes( $dbw->timestamp( $this->params[
'casTime'] ) )
76 $lbFactory->commitAndWaitForReplication( __METHOD__, $ticket );