Page MenuHomePhabricator

Investigation: Automatic expiration of user rights
Closed, ResolvedPublic3 Estimated Story Points

Description

What is the status of the existing work on T12493? How can Community-Tech help?

Event Timeline

There are patches in Gerrit which add automatically-expiring users groups to MediaWiki as a core feature. I have been working with Anomie to get these patches reviewed. Then there will need to be schema changes on the Wikimedia cluster, which often take a long time. For the moment, barring any significant sticking points, it doesn't seem like there will be much for Community Tech to do there, other than liaising with relevant community members (admins and bureaucrats on all wikis, but particularly stewards) when development is wrapping up.

One of the patches is https://gerrit.wikimedia.org/r/328491, which modifies a number of DB queries to ignore users with expired user group memberships. These queries are quite complex, and I am concerned that modifying them like this will unacceptably degrade the performance of some special pages and API queries on WMF production wikis. I'll try to get one of WMF's DBAs to look at the queries, but they seem to be extremely busy, so Community Tech might have a role to play in getting the queries looked at by someone with suitable expertise.

Community Tech could really help with T153817: Notify users when their user group membership is about to expire, or has expired. The main sticking point is that these notifications would have to be scheduled to be sent at a particular time, which is currently not supported by Echo's infrastructure. That is moving beyond my area of knowledge, and may require the involvement of the Collaboration team.

I'll try to get one of WMF's DBAs to look at the queries, but they seem to be extremely busy

We are never busy to review changes, the problem is that sometimes changes are extremely blocked by old technical debt (difficult) and that it is not easy to scale for the largest and high traffic wikis without doing large refactoring.

I have yet to test the new queries, but in this case I do not foresee huge blockers regarding schema changes (although it would hard-require getting those tables a proper primary key) because user-related tables tend to be small and not read a lot. New PKs may or may not need a dc failover, but one is scheduled for the beginning of next quarter- even if the functionality is not ready for then, I would strongly suggest to make at least the PKs ready by then, so that subsequent schema changes are trivial.

There are only 2 things that worry me: I hope there is a purging process to delete groups expired to reduce useless rows in an asynchronous (but very low priority) job, and the new join, which historically has affected negatively query plans.

Community Tech could really help with T153817: Notify users when their user group membership is about to expire, or has expired. The main sticking point is that these notifications would have to be scheduled to be sent at a particular time, which is currently not supported by Echo's infrastructure.

I hope there is a purging process to delete groups expired to reduce useless rows in an asynchronous (but very low priority) job

Maybe this is the solution @TTO: If we have an asynchronous process to delete expired rows, if it runs often enough, it could also take care of notifications?

kaldari set the point value for this task to 3.Mar 8 2017, 12:45 AM
kaldari moved this task from Needs Discussion to Up Next (June 3-21) on the Community-Tech board.
kaldari claimed this task.

The status of the work on automatic expiration of user rights is that it has been implemented and is deployed on beta labs, but not on the production cluster. (The schema change is already live on production, however.) There are two blockers for deploying to the production cluster: improving notifications (T153817 and T159301), and documenting the feature (T161685), both of which Community-Tech could help with.