Page MenuHomePhabricator

Log debouncing fails for users with different user IDs and actor IDs
Closed, ResolvedPublic1 Estimated Story Points

Description

Background

Since the actor migration, users are associated with a user ID and an actor ID. These are stored in the actor table, as actor_user and actor_id, respectively.

IPInfo's Logger inserts log entries via ManualLogEntry. When log entries are created, they use the actor ID to identify the performer.

Logger::debouncedLog looks up whether a log row has already been made for a given user within a given time period; however, it checks for the user ID.

Therefore, for any user whose actor ID and user ID are different, the logger doesn't debounce correctly.

Steps to reproduce

This assumes the user Admin has an actor ID different from their user ID.

Attempt to log the same action several times using MediaWiki's PHP shell (php maintenance/shell.php) with steps along these lines:

$performer = User::newFromName( 'Admin' );
$loggerFactory = \MediaWiki\MediaWikiServices::getInstance()->get( 'IPInfoLoggerFactory' );
$logger = $loggerFactory->getLogger();
$logger->logViewInfobox( $performer, '127.0.0.1' ); // Default debounce time is 24 hours
$logger->logViewInfobox( $performer, '127.0.0.1' ); // Shouldn't log anything to the database, but does

How to fix

Logger::debouncedLog should check for the actor ID.

Event Timeline

Change 759561 had a related patch set uploaded (by Tchanders; author: Tchanders):

[mediawiki/extensions/IPInfo@master] Check actor ID in Logger::debouncedLog

https://gerrit.wikimedia.org/r/759561

ARamirez_WMF set the point value for this task to 1.Feb 8 2022, 5:59 PM

Change 759561 merged by jenkins-bot:

[mediawiki/extensions/IPInfo@master] Check actor ID in Logger::debouncedLog

https://gerrit.wikimedia.org/r/759561

Change 762821 had a related patch set uploaded (by Tchanders; author: Tchanders):

[mediawiki/extensions/IPInfo@master] Make LoggerFactory::getLogger public

https://gerrit.wikimedia.org/r/762821

Change 762821 merged by jenkins-bot:

[mediawiki/extensions/IPInfo@master] Make LoggerFactory::getLogger public

https://gerrit.wikimedia.org/r/762821

This was accidentally moved out of Done - I've moved it back.