Page MenuHomePhabricator

Add message to Special:Watchlist /raw and /clear to indicate slower speed
Open, NormalPublicBug

Description

Per discussion below, a message should be added to Special:Watchlist to alert users that /raw and /clear use the Job queue and it may take a while.

--Original Report--

When clearing my watchlist it took a while to update and show no pages were on there

Method 1:

  1. Visit Special: Watchlist
  2. Click the edit button
  3. Then clear this watchlist
  4. Press the big red confirm button
  5. See an error stating too many pages to display

  1. Return to your watchlist - It will not be cleared
  2. Wait about an hour and return to your watchlist. It should be clear

Method 2:
1/2: As above

  1. Click edit raw watchlist
  2. Select everything in the box and blank it
  3. Save changes
  4. As above (5/6/7)

NB: This is displayed on enwp with 1428 pages (excluding talk) on the Watchlist being cleared

Event Timeline

RhinosF1 created this task.May 5 2019, 9:38 AM
Restricted Application added a project: Growth-Team. · View Herald TranscriptMay 5 2019, 9:38 AM
Restricted Application added a subscriber: Aklapper. · View Herald Transcript
RhinosF1 changed the subtype of this task from "Task" to "Bug Report".May 5 2019, 9:39 AM

Update: Edit raw watchlist and blanking that also fails with same error

RhinosF1 updated the task description. (Show Details)May 5 2019, 9:41 AM

Usually this only happened with many more watchlist entries, see T41510. Maybe this is instead somehow related to T220245?

@Aklapper Interestingly, my watchlist is now showing as empty.

RhinosF1 renamed this task from Watchlist clearing fails with too many pages to Special:Watchlist takes a while to update when the watchlist is cleared.May 5 2019, 2:44 PM
RhinosF1 updated the task description. (Show Details)
kostajh added a subscriber: kostajh.

Yeah, the UX for this isn't great. What happens is that if you try to clear your watchlist (either editing raw watchlist and clearing the text, or by pressing the clear button), and the number of items is greater than $wgUpdateRowsPerQuery, the job queue is used for clearing the watchlist. That means you'll have no insight into the progress of the operation, nor really know what's going on. Usually the job queue works pretty quickly (a few seconds) but if it's backed up, it can take hours.

Also, the "too many pages to display" message is no longer accurate and shouldn't be displayed.

Input from a product manager or designer on the desired UX in these situations would be helpful.

Yeah, the UX for this isn't great. What happens is that if you try to clear your watchlist (either editing raw watchlist and clearing the text, or by pressing the clear button), and the number of items is greater than $wgUpdateRowsPerQuery, the job queue is used for clearing the watchlist. That means you'll have no insight into the progress of the operation, nor really know what's going on. Usually the job queue works pretty quickly (a few seconds) but if it's backed up, it can take hours.

A message indicating this would be nice or some sort of warning on Special: Watchlist

Also, the "too many pages to display" message is no longer accurate and shouldn't be displayed.

That makes sense as currently It looks like that's preventing it clearing to just anyone

Input from a product manager or designer on the desired UX in these situations would be helpful.

Thanks for the response!

Adding @MMiller_WMF although we might want a product manager from Core Platform Team to weigh in with their preferences here.

Per #wikimedia-tech IRC meetup tagging @CCicalese_WMF as they're showing as the senior product manager from Core Platform Team

Per #wikimedia-tech IRC meetup

For anyone that doesn't know public logs are available at https://wm-bot.wmflabs.org/logs/%23wikimedia-tech/20190508.txt - It's between about 15:00 - 15:20

@RhinosF1 -- would you say that the larger issue is that the watchlist takes a long time to clear, or that the user doesn't have any warning that it will take a long time? The latter is obviously faster and easier to fix than the former.

@kostajh -- when you say this:

Also, the "too many pages to display" message is no longer accurate and shouldn't be displayed.

Do you mean that the message is inaccurate in the sense that we can display an arbitrary number of pages? And that's what we should be displaying?

@RhinosF1 -- would you say that the larger issue is that the watchlist takes a long time to clear, or that the user doesn't have any warning that it will take a long time? The latter is obviously faster and easier to fix than the former.

I wouldn't mind just a note saying 'due to the way this feature works, changes to your watchlist may not show immediately as they are pushed through the job queue. You can see the status of the queue by visiting..... or whatever wording is best.
As long as people don't just keep trying for no reason like I did.
Obviously, if clearing being slow can be fixed then that rules out needing a message but I think a message should be put up at least in the meantime while that is fixed.

Would setting up a subtask to manage each issue be best?
Task 1 - A message needs to be put up
Task 2 - Improve the speed of Special:Watchlist clearing

I don't mind either but a message should be put up for definite so it's clear what's going on

daniel added a subscriber: daniel.May 14 2019, 12:45 PM

Maybe I'm naive, but I'm wondering why any jobs need to be involved at all. Shouldn't be deleting all items for a given user be a split second operation on the db table? Can anyone shed some light on why this is slow enough to require cascading jobs

Maybe I'm naive, but I'm wondering why any jobs need to be involved at all. Shouldn't be deleting all items for a given user be a split second operation on the db table? Can anyone shed some light on why this is slow enough to require cascading jobs

For smaller watchlists, sure it's not a problem, but for larger ones (see T68212) there were timeout issues. IIRC the threshold for using the job queue is currently >500 items, maybe that could be increased.

JTannerWMF added a subscriber: JTannerWMF.

We will fix the message on this, however the speed is not within scope of this team. We believe the Core Platform Team would be responsible for the speed. We will use this Phab task for the message and Core Platform Team can use another for the speed.

We will fix the message on this, however the speed is not within scope of this team. We believe the Core Platform Team would be responsible for the speed. We will use this Phab task for the message and Core Platform Team can use another for the speed.

Thanks for offering to fix the message, I'll create a new taks for that now as a subtask of this that can be used.

RhinosF1 renamed this task from Special:Watchlist takes a while to update when the watchlist is cleared to Add message to Special:Watchlist /raw and /clear to indicate slower speed.May 14 2019, 5:55 PM
RhinosF1 updated the task description. (Show Details)

@JTannerWMF - Does the set up of the task I've done seem okay to you?

Also, the "too many pages to display" message is no longer accurate and shouldn't be displayed.

@kostajh - Does this need a sub task or is it being handled via this task

Thanks for altering the tasks, @RhinosF1. I think these things look good for now, and you'll see more conversation on this task when the team turns attention to it.

So, it sounds like we've got a good split on this task. IMHO, the right way to do this is:

  • Set a flag that the watchlist deletion has been queued.
  • If this flag is set, show a message in Special:Watchlist.
  • If this flag is set, disallow adding any new items to the watchlist (this is probably the easiest way to handle it).
  • In the job queue, when the last batch of watchlist items is deleted, also unset the flag.

Does this sound about right?

So, it sounds like we've got a good split on this task. IMHO, the right way to do this is:

  • Set a flag that the watchlist deletion has been queued.
  • If this flag is set, show a message in Special:Watchlist.
  • If this flag is set, disallow adding any new items to the watchlist (this is probably the easiest way to handle it).
  • In the job queue, when the last batch of watchlist items is deleted, also unset the flag.

Does this sound about right?

Sounds fine.

What wording will be used on the message?