Calls to SentryTracingBuilder can now be chained correctly#2726
Merged
bitsandfoxes merged 2 commits intomainfrom Oct 16, 2023
Merged
Calls to SentryTracingBuilder can now be chained correctly#2726bitsandfoxes merged 2 commits intomainfrom
bitsandfoxes merged 2 commits intomainfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Resolves #2721
Problem
The dotnet
UseRoutingandUseEndpointsmethods are just extensions on the builder... they set properties etc. on the builder before adding middleware. The only part of what they do that gets passed to theSentryTracingBuilder.InnerBuilderthen is the delegate that they return on the last line of their implementation (e.g. this).Previously we were calling that delegate against the InnerBuilder and returning the result directly (which implicitly returns a reference to the InnerBuilder). Chained calls would then be against the InnerBuilder rather than the SentryTracingBuilder.
This caused issues since
UseRoutingsets properties on theSentryTracingBuilderand then (in the chained call)UserEndpointstries to follow up with some matching logic... only it's not using the same builder! It's using the InnerBuilder at this stage 😢Solution
We've separated using the InnerBuilder to call the delegate from the return value in our SentryTracingBuilder so that for chained calls, the same builder will always be used.