Loosen exception matching logic in IsCausedBy<T> #1236
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.
Currently, if we match multiple assemblies in FailureDetails.IsCausedBy's final case, we throw AmbiguousMatchException. This can be detrimental when multiple versions of the same assembly are loaded. This softens this check so that if multiple assemblies are matched to the FailureDetails' name, we will return true if any are assignable to T.
Found from a bug where the Durable Functions WebJobs extension loaded into the Functions Host checks if a FailureDetails returned from the user activity code IsCausedBy and threw an exception due to the host loading multiple versions of the DLL from which the exception originated (even though the exception was thrown in the dotnet isolated worker).