Page MenuHomePhabricator

Simultaneous task moving on workboards results in error
Closed, ResolvedPublic


User A moves a task from column A to column B
User B has the same workboard open and - without refreshing the page - moves a task to column A below the above mentioned task (which technically is no longer there)
Below error appears, the task moving of user A is succesful, while user B's task returns to it's previous position.

phabricator-workboards-bug.png (210×1 px, 20 KB)

If this happens because we do not have Aphlict Notifications configured in our instance it's fine.

Version Information:

phabricator 5767097824610cb3256056a3e99916fca9dda2b7 (Mon, Jan 30) (branched from 1be3ef02276812296c01e41122f19d6ea8077f81 on origin)
arcanist 9503b941cc02be637d967bb50cfb25f852e071e4 (Sat, Jan 7) (branched from ade25facfdf22aed1c1e20fed3e58e60c0be3c2b on origin)
phutil 10963f771f118baa338aacd3172aaede695cde62 (Fri, Jan 13) (branched from 9d85dfab0f532d50c2343719e92d574a4827341b on origin)

Event Timeline

eFrane updated the task description. (Show Details)
eFrane updated the task description. (Show Details)

These aren't really related from a backend viewpoint, even though they're closely related from a UX viewpoint.

oh ok, i guess we should... catch this error and give a give a friendly message?

When you drop a card into a column, we send something like "alincoln dropped card X into column Y below card Z" to the server.

If card Z has moved to a different column (in another window, or through racing), we hit this.

I think the cleanest fix is to instead send "alincoln dropped card X into column Y; on the client screen it's below cards: Z, U, V, Q, R." Then we go through that list of cards until we find one that's still in the column, or treat the action as "dropped at the top of the column" if we fail to find any valid cards. I think that will do what the user wanted like 99% of the time, and be obviously ambiguous the other 1%.

This also touches T10333: if you drop below card Z in group G (say, "High Priority" or "Assigned to alice"), I think intent is always to end up in group G even if card Z has moved from that group.

That is, if users do this:

  • Card Z is in "Low Priority" in column "Backlog".
  • User A loads the workboard.
  • User B loads the workboard.
  • User A moves Card Z to "High Priority" in "Backlog".
  • User B (who still sees Card Z as "Low Priority") move Card Y from another column to "Backlog", placing it under Card Z.

In this case, I think we'd currently change "Card Y" to be "High Priority", but we would more faithfully reflect intent by keeping it in the "Low Priority" group and choosing a fallback card for purposes of positioning.

epriestley edited projects, added Workboards (v3); removed Workboards.
epriestley triaged this task as Normal priority.