mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-12-22 21:40:54 +01:00
No description
a77cfb023d
Summary: Ref T13528. When you call `$future->resolve()`, we currently guarantee it is resolved by calling `FutureIterator->resolveAll()`. `resolveAll()` does not actually "resolve()" futures: it guarantees that they are ready to "resolve()", but does not actually call "resolve()". In particular, this means it does not throw exceptions. This can lead to a case where a Future has "resolve()" called directly (e.g., via a FutureProxy), uses "FutureIterator" to resolve itself, throws an exception inside "FutureIterator", the exception is captured and attached to the Futuer, then the outer future tries to access results. This fails since it's out-of-order. This can happen in practice with syntax highlighting futures, which may proxy pygments futures. Instead, "resolveAll()" before testing for exaceptions. Test Plan: - Locally, tried to highlight a Paste with an unrecognized lexer extension using Pygments. - Before patch: fatal when trying to access results of a Future with no results (because it has an exception instead). - After patch: resolution throws the held exception properly. - (See also next change.) Maniphest Tasks: T13528 Differential Revision: https://secure.phabricator.com/D21198 |
||
---|---|---|
bin | ||
externals | ||
resources | ||
scripts | ||
src | ||
support | ||
.arcconfig | ||
.arclint | ||
.arcunit | ||
.editorconfig | ||
.gitignore | ||
LICENSE | ||
NOTICE | ||
README.md |
Arcanist is the command-line tool for Phabricator. It allows you to interact with Phabricator installs to send code for review, download patches, transfer files, view status, make API calls, and various other things. You can read more in the User Guide
For more information about Phabricator, see http://phabricator.org/.
LICENSE
Arcanist is released under the Apache 2.0 license except as otherwise noted.