Be more db-friendly when purging expired userrights
authorEddie Greiner-Petter <git@eddie-sh.de>
Sun, 15 Oct 2017 22:36:40 +0000 (00:36 +0200)
committerAaron Schulz <aschulz@wikimedia.org>
Wed, 14 Feb 2018 09:02:33 +0000 (09:02 +0000)
commitedba39ab602bbcff4aa0f30ce3f7e0dc8bcb6fbb
treea420cca4b599e19a2d3b24ce9f85512746da5e3b
parent130344b47ad939114400d2d0dfbc4018d6d2b5a9
Be more db-friendly when purging expired userrights

Each expired row has to be fetched from the user_groups table, deleted
from that table and added to the user_former_groups table.  Per Jaimes
request, let's not do this for all rows at once but for smaller chunks
and wait for replication to catch up after each chunk has been
processed. In addition the function to purge the expired rows now sets a
lock so that there won't be multiple concurrent runs.

Also, cleaning this table up isn't urgent and thus should be done in a
job and not a deferred update, so let's move it there.

Bug: T176754
Change-Id: I671d4b9d09677a2f474477ba7fea33a44d6318aa
autoload.php
includes/DefaultSettings.php
includes/jobqueue/jobs/UserGroupExpiryJob.php [new file with mode: 0644]
includes/user/UserGroupMembership.php
tests/phpunit/includes/SiteStatsTest.php