Move the "container updated" message for Buildables that build Diffs outside of the transaction master
Summary: Ref T13216. See PHI970. Ref T13054. See some discussion in T13216. When a Harbormaster Buildable object is first created for a Diff, it has no `containerPHID` since the revision has not yet been created. We later (after creating a revision) send the Buildable a message telling it that we've added a container and it should re-link the container object. Currently, we send this message in `applyExternalEffects()`, which runs inside the Differential transaction. If Harbormaster races quickly enough, it can read the `Diff` object before the transaction commits, and not see the container update. Add a `didCommitTransaction()` callback after the transactions commit, then move the message code there instead. Test Plan: - See T13216 for substantial evidence that this change is on the right track. - Before change: added `sleep(15)`, reproduced the issue reliably. - After change: unable to reproduce issue even with `sleep(15)` (the `containerPHID` always populates correctly). Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T13216, T13054 Differential Revision: https://secure.phabricator.com/D19807