Translate unknown exceptions to UNKNOWN Status #461
+11
−7
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.
When using fromThrowable for unknown exceptions, we are recursively looking for a StatusException or StatusRuntimeException and returning the status of an inner exception. This isn't really the correct behavior because an inner exception that is not caught by the application and not explicitly converted to a StatusException doesn't necessarily translate to the Status that should be returned by the application. More importantly, returning the inner status exception with it's parent as a cause inverts the stacktrace (it looks as if the parent exception is the cause of the status exception but it's the opposite), which leads to confusing stacktraces.
In fact, there is still a problem with the stacktrace if ServiceA is calling ServiceB which throws a status exception that is not caught by ServiceA. The stacktrace would only show the code path in ServiceB and the stacktrace in ServiceA would be lost.. there is more that needs to be done to fix this issue..