Page MenuHomePhabricator

Expand the BulkJob tool
Closed, ResolvedPublic

Description

We have a few things in the UI that could take many minutes to process, and a few things that we avoid doing because of this. For example:

  1. Moving a Phriction document. We have to move all the children too, so this could take an arbitrarily long amount of time.
  2. Maniphest batch editing. A user can apply an arbitrarily large number of edits to an arbitrary set of tasks.
  3. Deleting a column on Workboards. We avoid his for now and might not want to actually implement it, but it can be arbitrarily slow.
  4. Deleting other objects. I like that this can't be done from the web UI at all, but a technical consideration is that it may be slow.
  5. Downloading a zip/tarball of a repository (to generate the file).
  6. In Wall of Shame at FB, there was a queue-generation workflow where you'd basically run a query over 10 milion objects or whatever. This could take a few minutes. We might have something similar in Nuance.

In all of these cases, it would be nice to have a workflow like:

  • Your task is queued.
  • You get taken to a "Your task is processing, please wait. You can continue working, stuff will happen in the background and you'll be notified when it's done." screen with a progress bar and such.
  • There's some UI way to check/review your background tasks.
  • You get a notification when one finishes.

From a technical point of view, this probably looks like:

  • Add some kind of new "UserBackgroundTask" sort of object.
  • Allow a normal queue task to be associated with one when the queue task is scheduled.
  • Allow the daemons to publish updates/progress to the task explicitly.
  • Publish logs implicitly?
  • Publish error/failure/restart/completion implicitly.
  • UI to check/review.
  • Notification on completion.

Related Objects

Event Timeline

epriestley raised the priority of this task from to Normal.
epriestley updated the task description. (Show Details)
epriestley added a project: Daemons.
epriestley added a subscriber: epriestley.
epriestley renamed this task from Write a piece of UI to let users view the progress of long-running tasks to Write a piece of UI to let users view the progress of long-running background tasks.Jan 25 2015, 2:08 PM
epriestley added a project: Phacility.
epriestley moved this task from Backlog to Do Eventually on the Phacility board.

Some of the Phacility cluster UX (allocating instances, triggering backups) would benefit from having a workflow like this available.

angie added a project: Restricted Project.Jun 16 2015, 8:52 PM
angie added subscribers: angie, jhurwitz.

This now exists after T8637, but has various missing features and hasn't been adapted for other use cases mentioned here yet.

epriestley renamed this task from Write a piece of UI to let users view the progress of long-running background tasks to Expand the BulkJob tool.Jun 23 2015, 8:42 PM
epriestley claimed this task.

D18962 uses this to implement "Export Data" for large result sets.

T10005 / T13025 rebuilt the bulk editor on top of this infrastructure.

The UX is still a little rough but it seems to be working fairly well overall, and working for several different use cases.

Many of the use cases described in the original task are still relevant and we're likely to implement some sooner or later, but they can live on in followup tasks (T6004, T1816, etc).