Show the number of rows purged when running
maintenance/purgeExpiredUserrights.php
Bug: T176754
Change-Id: I091042baef8982c108b17126cde4998fc9a0cd6d
/**
* Purge expired memberships from the user_groups table
/**
* Purge expired memberships from the user_groups table
+ *
+ * @return int|bool false if purging wasn't attempted (e.g. because of
+ * readonly), the number of rows purged (might be 0) otherwise
*/
public static function purgeExpired() {
$services = MediaWikiServices::getInstance();
if ( $services->getReadOnlyMode()->isReadOnly() ) {
*/
public static function purgeExpired() {
$services = MediaWikiServices::getInstance();
if ( $services->getReadOnlyMode()->isReadOnly() ) {
}
$lbFactory = $services->getDBLoadBalancerFactory();
}
$lbFactory = $services->getDBLoadBalancerFactory();
$lockKey = $dbw->getDomainID() . ':usergroups-prune'; // specific to this wiki
$scopedLock = $dbw->getScopedLockAndFlush( $lockKey, __METHOD__, 0 );
if ( !$scopedLock ) {
$lockKey = $dbw->getDomainID() . ':usergroups-prune'; // specific to this wiki
$scopedLock = $dbw->getScopedLockAndFlush( $lockKey, __METHOD__, 0 );
if ( !$scopedLock ) {
- return; // already running
+ return false; // already running
do {
$dbw->startAtomic( __METHOD__ );
do {
$dbw->startAtomic( __METHOD__ );
);
// Push the groups to user_former_groups
$dbw->insert( 'user_former_groups', $insertData, __METHOD__, [ 'IGNORE' ] );
);
// Push the groups to user_former_groups
$dbw->insert( 'user_former_groups', $insertData, __METHOD__, [ 'IGNORE' ] );
+ // Count how many rows were purged
+ $purgedRows += $res->numRows();
}
$dbw->endAtomic( __METHOD__ );
$lbFactory->commitAndWaitForReplication( __METHOD__, $ticket );
} while ( $res->numRows() > 0 );
}
$dbw->endAtomic( __METHOD__ );
$lbFactory->commitAndWaitForReplication( __METHOD__, $ticket );
} while ( $res->numRows() > 0 );
public function execute() {
$this->output( "Purging expired user rights...\n" );
public function execute() {
$this->output( "Purging expired user rights...\n" );
- UserGroupMembership::purgeExpired();
- $this->output( "Purge requests submitted.\n" );
+ $res = UserGroupMembership::purgeExpired();
+ if ( $res === false ) {
+ $this->output( "Purging failed.\n" );
+ } else {
+ $this->output( "$res rows purged.\n" );
+ }