mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-29 02:02:41 +01:00
Use "MethodCallFuture" to move Diffusion Conduit exceptions to resolution time
Summary: Depends on D21720. Ref T13666. See D21720 for additional discussion. Use "MethodCallFuture", introduced in D21720, so that exceptions raised in "execute()" are thrown when the future is resolved, not when the future is created. This makes exception behavior for clustered and non-clustered setups consistent, and chooses the intended (clustered) behavior in both cases, which currently deals with errors better. Test Plan: - Applied both parts of the patch in T13666 (break history queries, force immediate futures) to reproduce the issue in T13666. - Loaded a Diffusion landing page, reproduced the error described in that task. - Applied this patch, verified landing page works again. - Removed the "break history queries" change, verified landing page works in forced-immediate mode. - Removed the "force immediate" change, verified landing page works in "actual future" mode. Reviewers: cspeckmim Reviewed By: cspeckmim Maniphest Tasks: T13666 Differential Revision: https://secure.phabricator.com/D21721
This commit is contained in:
parent
1965b78b34
commit
b757e5c302
1 changed files with 3 additions and 4 deletions
|
@ -2269,10 +2269,9 @@ final class PhabricatorRepository extends PhabricatorRepositoryDAO
|
||||||
$never_proxy);
|
$never_proxy);
|
||||||
|
|
||||||
if (!$client) {
|
if (!$client) {
|
||||||
$result = id(new ConduitCall($method, $params))
|
$conduit_call = id(new ConduitCall($method, $params))
|
||||||
->setUser($viewer)
|
->setUser($viewer);
|
||||||
->execute();
|
$future = new MethodCallFuture($conduit_call, 'execute');
|
||||||
$future = new ImmediateFuture($result);
|
|
||||||
} else {
|
} else {
|
||||||
$future = $client->callMethod($method, $params);
|
$future = $client->callMethod($method, $params);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue