without this change there were cases (that we didn't test) where the tracing context would leak and pollute other parts of the code (including tests)
with this change we ensure that in case of errors we don't allow any dangling tracing context
* TracingChannelInterceptor: simple refactoring
* * More clean up in the `TracingChannelInterceptor`
- Move Spring Cloud Stream classes logic into `static` methods
to avoid eager load for those classes which are not present on CP
- Remove `emptyMessage()` since the contract for `ChannelInterceptor`
never accept a `null`
- Remove thread state manipulation from the `postReceive()` since
no one takes care about thread local afterwards
- Remove `afterReceiveCompletion()` in favor of its `default` impl
in the interface: we don't do thread local manipulation for `receive()`
since `afterReceiveCompletion()` is called *before* the message is really
returned to the target subscriber on the channel
* * Restore span manipulation for `receive()`.
Even if we don't need a thread local store, we still
need to call `span.end()` and set an exception tag
to it if any.
So, just reuse an existing API which includes thread local.
Even if we don't need it logically, there might be some
other interceptors in between which would like to take a
span from thread local do something even on that "void"
`receive()` operation
Without this change we don't even really know how many tags are created and what are their values.
With this change we want this information to be automatically rendered.
* Wraps producer / consumer once only
without this change we can wrap the kafka consumer / producer multiple times. First via post processors, second via aspect
with this change we're doing it only once via post processors. we do not wrap factories
fixes gh-1921
Spans names are in the form '<http method> <uri template>'
(e.g. 'GET /path/{id}'). This naming strategy matches the span names
generated by TraceWebFilter.
The improve naming strategy is not applied to RestTemplate as the uri
template is not readily available to interceptors and RestTemplate is
in maintenance mode
* Bump javadocs since version to 3.1.0
* Extend integration tests to cover all Kafka clients
* Add autoconfiguration module for kafka instrumentation
* Refactor instrumentation for reactive Kafka Receiver
* Refactor instrumentation for reactive Kafka Receiver
* Add docs for Kafka instrumentation
* Revert "Refactor instrumentation for reactive Kafka Receiver"
This reverts commit 58c8f2fa
* Revert "Revert "Refactor instrumentation for reactive Kafka Receiver""
This reverts commit 450a9f8c
* Remove empty test
* Resolve comments from PR 1936
* Revert whitespaces
* Revert whitespaces in common tests pom.xml
* Fix autoconfig to consider generics when registering beans.
Only register reactor-kafka beans if the dependency is on the classpath.
* Split autoconfig for kafka and reactor-kafka