without this workaround there is a problem with mutability of headers
with this change / workaround we're ensuring that the headers remain immutable.
We will fix this in Spring Framework 6; Spring Boot 3 in a much better way
fixes gh-1325
without this change whenever a traced executor is created (either via a proxy or directly) we create a new instance of that traced wrapper. The problem with that is such that we create a lot of objects (e.g. each getExecutor() would return a new instance of the traced version). There are projects such as Micrometer that create WeakReferences to those objects. That means that if we don't cache the traced instance then we will lose the WeakReference upon the first GC.
with this change we're introducing new static wrapper methods that cache the traced instance for a given delegate. That means that not only will we create fewer objects but also we will honour the WeakReference mechanisms.
fixes gh-2020
Fixes gh-1990
When using `@ValuePropertySource` in reactive web app,
`KafkaSender` bean is getting created before `BeanPostProcessor` populate `@Value`
and as a result topic is passed as `null` in `KafkaSender.Builder` and it throws `NullPointerException`
To resolve this we are using `Environment` to get the property value instead on relying on `BeanPostProcessor`
to populate `@Value`
Handle BeanCreationException instead of just BeanCurrentlyInCreationException.
This handles the case when a cyclic reference (causing a BeanCurrentlyInCreationException) occurs further down the line - when it is not the actuator of that references the in-creation HttpTracing bean, but a dependency of that actuator. In this case the exception that bubbles up here is an UnsatisfiedDependencyException, which is a BeanCreationException
without this change a default Feign.Builder doesn't have its feign.Client instrumented
with this change we're using reflection to instrument that Client
fixes gh-1870
* Don't allow double Gateway instrumentation
with this change we're doing both HeaderFilter based Gateway instrumentation and the Netty Client one.
with this change we're conditionally enabling the HeaderFilter instrumentation only when there is no Netty Client one present on the classpath.
fixes gh-1840
without this change we're registering the TracingFilter twice. Once, since it's a bean and second time via the FilterRegistrationBean.
with this change we're not registering the TracingFilter as a bean. It's been final so nobody could actually extend it so we're not breaking the compatibility.
fixes gh-1839
* Do not autoconfigure Branve Mongo DB trace for async mongo db
* Fix checkstyle violations
* Add Junit to test BraveMongoDBAutoConfig for async mongo db driver
* Minor fixes
* Use JUnit 5