without this change when an executor implementation was a final class or had a final method - the application wouldn't start or would produce NPE at startup.
with this change we have a custom bean post processor that wraps an aspect manualy either via a JDK Proxy when a class is final or a method is final or creates a CGLIB proxy if that's possible.
fixes#550
without this change when an executor implementation was a final class or had a final method - the application wouldn't start or would produce NPE at startup.
with this change we have a custom bean post processor that wraps an aspect manualy either via a JDK Proxy when a class is final or a method is final or creates a CGLIB proxy if that's possible.
fixes#550
without this change when user adds a callback then it's not wrapped in a trace representation, thus when executed in a separate thread, it's then missing all the tracing information
with this change we're wrapping the future in our representation that passes the tracing information around
fixes#546
without this change when user adds a callback then it's not wrapped in a trace representation, thus when executed in a separate thread, it's then missing all the tracing information
with this change we're wrapping the future in our representation that passes the tracing information around
fixes#546
Fix#556
* Explicitly state that `StreamSleuthAutoConfiguration` should
execute before `TraceAutoConfiguration`;
* Also ensure that `ChannelsEndpointAutoConfiguration` is configured
after `StreamSleuthAutoConfiguration` to ensure that the bound
channels are added to the `/channels` actuator endpoint
The main arguments for these features are
* api-agnostic means to collaborate with a span
- use of annotations allows users to add to a span with no library dependency on a span api.
This allows Sleuth to change its core api less impact to user code.
* reduced surface area for basic span operations.
- without this feature one has to use the span api, which has lifecycle commands that
could be used incorrectly. By only exposing scope, tag and log functionality, users can
collaborate without accidentally breaking span lifecycle.
* collaboration with runtime generated code
- with libraries such as Spring Data / Feign the implementations of interfaces are generated
at runtime thus span wrapping of objects was tedious. Now you can provide annotations
over interfaces and arguments of those interfaces
This PR is an adoption of @Koizumi85 work started here - https://github.com/Koizumi85/spring-cloud-sleuth-annotationfixes#182