Rethrow exceptions across RPC boundary #353
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
If an RPC call fails, the details are placed in the
error
response.If we're using
->call_rpc
or other wrapper mechanisms, we want those to fail in those cases, so this adds a check for the{error}
key and uses that to construct anInternalException
instance. Note that the precise details of the exception are likely to change to accommodate the interoperability requirements for other languages: ideally we'd always raise the same exception class and details as the upstream service threw, but also need to be careful about the following cases:For these reasons, we start with an
InternalException
instance in all cases, since we expect calling code to be able to handle that (it can be raised regardless of what the called code is going to do, for example to indicate a transport error). Future updates are likely to add other possible exception responses giving a closer match to the original exception.