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.
Before this PR, the main function created a single
TracerProvider
that was passed down to the httpServer
. As trace resources, such asservice.name
, are immutable, this approach had the limitation of all tracing middlewares using the sameservice.name
. When deploying in Docker, as there was only one service, all "microservices" reported the same service name.This PR introduces a new object called
TraceInstaller
, which creates fresh newTracerProvider
instances for each handler that is instrumented. This allows different handlers to specify their own service name, even when they run inside the same process. By doing this, we get the same trace format in docker, where different endpoints live within the same process, as we do in Kubernetes, where each service gets their own pod.As a comparison, this is how a trace looked before and after the change, both deployed in docker as a single container:
Tasklist: