fix(zipkin): global plugin always executes in rewrite phase #9877
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.
Summary
The global Zipkin plugin always executes in the rewrite phase whenever a route/service-specific plugin enables, since the router only executes after the
rewrite
phase.This cause an issue where route/service-specific plugin inherits the context written by the global plugin in the
access
phase.According to plugin precedence, a plugin will always be run once and only once per request, and route/service-specific plugins have higher priority than global plugins.
This PR moves the logic inside the
rewrite
phase handler to thelog
phase, and it sets the span annotation lazily with no side-effects.Checklist
Issue reference
Fix #9812