without this change when batch process finishes the async reporter doesn't have time to properly shutdown and send out spans to Zipkin.
with this change we're registering a shutdown hook. AsyncReporter has no option to send out spans in a blocking way, so what we need to do to flush it, then wait for the configured time for the spans to be drained from the queue and then give a chance to send the spans out over the wire.
fixes gh-2035
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
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
* Add auto-configuration for spring kafka
* Add auto-configuration for spring kafka
* Make spring-kafka instrumentation autoconfig conditional on missing brave
Co-authored-by: flavium31 <w7og3bljlmmn742puqw2zwzu7ycuwmflr2nb4swrwzivccx6arpq>
* First draft of instrumenting Spring Security
* Create events based on Authentication not SecurityContext
* Simplifying security config
* Checkstyle reformat
* Create DocumentedSpan and EventValue for Spring Security instrumentation
* Adding spring-security-bom to ensure the right dependencies are used.
* TracingSecurityContextChangedListenerTests
* Adding integration tests
* Deleting spring-cloud-sleuth-sample-security
* Checkstyle, license, javadoc
* Inlining SleuthSecuritySpan methods
* Deleting javadoc links from DocumentedSpan
* Updating auto-generated docs
Fixes gh-1996
Change order of TextOutputFormat enum and give `CONTENT_TYPE_OPENZIPKIN_JSON_V2`
highest ordinal value, so that it will be matched first by spring-boot-actuator
and in case of default Accept header JSON data will be returned.
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
* Fix datasource-proxy log-level is not working
- Aligned default values of `Query` & `SlowQuery` in
`TraceJdbcProperties.DataSourceProxyProperties`
and `DataSourceProxyProperties`
- Add code to copy properties of `Query` and `SlowQuery` in
`DataSourceProxyConfiguration`
- Add test case to check if `log-level` can be override or not.
Fixes gh-1973
* Disable query log listener by default
- By default `QueryLogListener` and `LoggingQueryLogListener`
will be disabled, dev need to enable it by using properties
- By default `Slf4j` will be enlabled for query logging
so by adding below property slow query logging will be enabled
`spring.sleuth.jdbc.datasource-proxy.slow-query.enable-logging=true`
this property will register `SLF4JSlowQueryListener`
* Add docs for how-to enable data-proxy query logs