With RxJava 1.1.4, `RxJavaPlugins.reset()` method has been made public (though `experimental`). With this update, we no longer require to manually wrapp and expose the `reset()` method of RxJavaPlugins. This PR is in conjunction with [Spring-Cloud-Netflix PR] (https://github.com/spring-cloud/spring-cloud-netflix/pull/1007) since RxJava version is maintained as a part of that dependency. Merge this PR only after the Spring-Cloud-Netflix PR is merged to avoid compile errors.
Removes wiremock as a test dependency in core (which created more
issues than you might expect because Tomcat and Jetty don't treay
HTTP headers in the same way apparently).
Also moves the spring-messaging dependency to where it is needed
in sleuth stream.
when an exception was thrown by Feign it was not caught by our Feign customizations and wasn't properly closed. By adding a custom implementation we're closing span whenever an exception is thrown.
Fixes#257
The problem resulted in wrong span durations. The issue was such that for the case where span from request has a parent that needs to be reported we didn't stop that parent. That means that it has value of 'end' equal to 0. In that situation the duration of Span was calculated as a difference between current time and the start time. We should never report spans that have not been stopped - otherwise that stopping will take place a lot of time later.
fixes#247
The retryable case was already covered and tested but if the exception
is not retryable, we need to rethrow and clean up the thread state.
Fixes gh-240
The Log object should never have a null entry as it is defined. This
change fixes that, backfills equals/hashCode for convenience, and adds
Jackson annotations that use the validating constructor.
This also adds a json annotation to span that allows logs to be
serialized. This is tested by round-tripping the json.
The TraceMessageChannelInterceptor should only be added once to a
channel. Normally this is the case automatically, but when the
application context hierarchy is complex, Spring Integration can
occasionally screw up and add the interceptor twice.
This change uses a Spring Integration specific API (VetoCapableInterceptor)
to prevent the double interceptor from being added.