purgeExpiredUserrights: Show number of rows purged
authorEddie Greiner-Petter <git@eddie-sh.de>
Sat, 3 Mar 2018 15:26:39 +0000 (15:26 +0000)
committerEddie Greiner-Petter <git@eddie-sh.de>
Sat, 3 Mar 2018 15:36:34 +0000 (15:36 +0000)
Show the number of rows purged when running
maintenance/purgeExpiredUserrights.php

Bug: T176754
Change-Id: I091042baef8982c108b17126cde4998fc9a0cd6d

includes/user/UserGroupMembership.php
maintenance/purgeExpiredUserrights.php

index e757e59..9da0370 100644 (file)
@@ -237,11 +237,14 @@ class UserGroupMembership {
 
        /**
         * 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() ) {
-                       return;
+                       return false;
                }
 
                $lbFactory = $services->getDBLoadBalancerFactory();
@@ -251,10 +254,11 @@ class UserGroupMembership {
                $lockKey = $dbw->getDomainID() . ':usergroups-prune'; // specific to this wiki
                $scopedLock = $dbw->getScopedLockAndFlush( $lockKey, __METHOD__, 0 );
                if ( !$scopedLock ) {
-                       return; // already running
+                       return false; // already running
                }
 
                $now = time();
+               $purgedRows = 0;
                do {
                        $dbw->startAtomic( __METHOD__ );
 
@@ -284,12 +288,15 @@ class UserGroupMembership {
                                );
                                // 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 );
+               return $purgedRows;
        }
 
        /**
index d0bbddf..ee40f5f 100644 (file)
@@ -36,8 +36,12 @@ class PurgeExpiredUserrights extends Maintenance {
 
        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" );
+               }
        }
 }