Move all ApplicationTransaction publishing to daemons


Move all ApplicationTransaction publishing to daemons

Ref T6367. Do all mail, feed, notification and search stuff from the daemons, in all editors.

There are four relatively-stateful editors (Audit, Differential, Phriction, PhortuneCart) which needed special care to move state into the daemons properly.

Beyond that, I moved mailTo/mailCC/feedRelated/feedNotify to be computed before we enter the worker:

  • This is simpler, since a lot of editors rely on being able to call $object->getReviewers() or similar to compute them.
  • This is more correct, since we want to freeze the lists at this moment in time.

Finally, I renamed loadEdges to willPublish and made it a slightly more general hook.

This is a bit fragile and I'm not thrilled about it.

It would probably be cleaner to have separate Editor and Publisher classes (something like @fabe's D11329 did). However, I think that's quite a lot of work, and I'd like to see stronger motivation for it (either in this actually being more fragile than I think, or there being other things we get out of it). Overall, I'm comfortable with this change, just definitely not a big fan of the "save" + "load" pattern since I think it's really fragile, nonobvious, hard to debug/predict, etc.

Test Plan:
Directly updated editors:

  • Created a new Phriction page, saw "Document Content".
  • Edited a Phriction page, saw "Document Diff".
  • Edited a revision, got normal looking mail.
  • Faked in changedPriorToCommitURI and verified it survived the state boundary.
  • Sent Audit mail.
  • Sent invoice mail.

Indirect editors - for these, I just made a change and made sure the mail generated:

  • Updated a paste.
  • Updated an event.
  • Updated a thread.
  • Updated a task.
  • Updated a mock.
  • Updated a question.
  • Updated a project.
  • Updated a file.
  • Updated an initiative.
  • Updated a Legalpad document.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley, fabe

Maniphest Tasks: T6367

Differential Revision: https://secure.phabricator.com/D13115