loadBalancer = $loadBalancer; $this->centralDBManager = $centralDBManager; } /** * @inheritDoc */ public function run( array $localFilters, array $globalFilters, string $group ) : void { if ( count( $localFilters ) ) { $this->updateHitCounts( $this->loadBalancer->getConnectionRef( DB_MASTER ), $localFilters ); } if ( count( $globalFilters ) ) { $fdb = $this->centralDBManager->getConnection( DB_MASTER ); $this->updateHitCounts( $fdb, $globalFilters ); } } /** * @param IDatabase $dbw * @param array $loggedFilters */ private function updateHitCounts( IDatabase $dbw, array $loggedFilters ) : void { $method = __METHOD__; $dbw->onTransactionPreCommitOrIdle( function () use ( $dbw, $loggedFilters, $method ) { $dbw->update( 'abuse_filter', [ 'af_hit_count=af_hit_count+1' ], [ 'af_id' => $loggedFilters ], $method ); }, $method ); } }