GithubHelp home page GithubHelp logo

java-spring-jaeger's Introduction

Build Status Released Version

Dependencies

The opentracing-spring-jaeger-starter simply contains the code needed to provide a Jaeger implementation of the OpenTracing's io.opentracing.Tracer interface.

For a project to be able to actually instrument a Spring stack, one or more of the purpose built starters (like io.opentracing.contrib:opentracing-spring-web-starter or io.opentracing.contrib:opentracing-spring-cloud-starter)
would also have to be included in the POM.

The opentracing-spring-jaeger-web-starter starter is convenience starter that includes both opentracing-spring-jaeger-starter and opentracing-spring-web-starter This means that by including it, simple web Spring Boot microservices include all the necessary dependencies to instrument Web requests / responses and send traces to Jaeger.

The opentracing-spring-jaeger-cloud-starter starter is convenience starter that includes both opentracing-spring-jaeger-starter and opentracing-spring-cloud-starter This means that by including it, all parts of the Spring Cloud stack supported by Opentracing will be instrumented

Library versions

Versions 1.x.y of the library are meant to target Spring Boot 2.x while versions 0.x.y are meant to be used with Spring Boot 1.5

Configuration

<dependency>
  <groupId>io.opentracing.contrib</groupId>
  <artifactId>opentracing-spring-jaeger-web-starter</artifactId>
</dependency>

or

<dependency>
  <groupId>io.opentracing.contrib</groupId>
  <artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
</dependency>

Either dependency will ensure that Spring Boot will auto configure a Jaeger implementation of OpenTracing's Tracer when the application starts.

If no settings are changed, spans will be reported to the UDP port 6831 of localhost. The simplest way to change this behavior is to set the following properties:

opentracing.jaeger.udp-sender.host=jaegerhost
opentracing.jaeger.udp-sender.port=portNumber

for the UDP sender, or use an HTTP sender by setting the following property:

opentracing.jaeger.http-sender.url = http://jaegerhost:portNumber/api/traces

Configuration options

All the available configuration options can be seen in JaegerConfigurationProperties. The prefix to be used for these properties is opentracing.jaeger. Furthermore, the service name is configured via the standard Spring Cloud spring.application.name property.

Beware to use the correct syntax for properties that are camel-case in JaegerConfigurationProperties.

  • For properties / yaml files use -. For example opentracing.jaeger.log-spans=true
  • For environment variables use _. For example OPENTRACING_JAEGER_LOG_SPANS

Defaults

If no configuration options are changed and the user does not manually provide any of the beans that the auto-configuration process provides, the following defaults are used:

  • unknown-spring-boot Will be used as the service-name if no value has been specified to the property spring.application.name or opentracing.jaeger.service-name (which has the highest priority).
  • CompositeReporter is provided which contains the following delegates:
    • LoggingReporter for reporting spans to the console
    • RemoteReporter that contains a UdpSender that sends spans to localhost:6831
  • ConstSampler with the value of true. This means that every trace will be sampled
  • NoopMetricsFactory is used - effectively meaning that no metrics will be collected

Senders

Configuring senders is as simple as setting a couple necessary properties

HTTP Sender

opentracing.jaeger.http-sender.url = http://jaegerhost:portNumber/api/traces

It's possible to configure authentication on the HTTP sender by specifying an username and password:

opentracing.jaeger.http-sender.username = username opentracing.jaeger.http-sender.password = password

Or by specifying a bearer token:

opentracing.jaeger.http-sender.authtoken = token

Note that when an HTTP Sender is defined, the UDP sender is not used, even if it has been configured

UDP Sender

opentracing.jaeger.udp-sender.host=jaegerhost opentracing.jaeger.udp-sender.port=portNumber

Common cases

Set service name

Set spring.application.name to the desired name

Log Spans

By default spans are logged to the console. This can be disabled by setting:

opentracing.jaeger.log-spans = false

Additional reporters

By defining a bean of type ReporterAppender, the code has the chance to add any Reporter without having to forgo what the auto-configuration provides

Sampling

  • Const sampler

    opentracing.jaeger.const-sampler.decision = true | false

  • Probabilistic sampler

    opentracing.jaeger.probabilistic-sampler.sampling-rate = value

    Where value is between 0.0 (no sampling) and 1.0 (sampling of every request)

  • Rate-limiting sampler

    opentracing.jaeger.rate-limiting-sampler.max-traces-per-second = value

    Configures that traces are sampled with a certain constant rate. For example, when sampler.param=2.0 it will sample requests with the rate of 2 traces per second.

  • Remote sampler

    Remote sampler consults Jaeger agent for the appropriate sampling strategy to use in the current service. This allows controlling the sampling strategies in the services from a central configuration in Jaeger backend. It can be configured like so:

    opentracing.jaeger.remote-controlled-sampler.host-port=localhost:5778

The samplers above are mutually exclusive.

A custom sampler could of course be provided by declaring a bean of type io.jaegertracing.samplers.Sampler

Propagate headers in B3 format (for compatibility with Zipkin collectors)

opentracing.jaeger.enable-b3-propagation = true

Propagate headers in W3C Trace Context format

opentracing.jaeger.enable-w3c-propagation = true

Advanced cases

Manual bean provisioning

Any of the following beans can be provided by the application (by adding configuring them as bean with @Bean for example) and will be used to by the Tracer instead of the auto-configured beans.

  • io.jaegertracing.samplers.Sampler
  • io.jaegertracing.metrics.MetricsFactory

io.jaegertracing.Tracer.Builder customization

If arbitrary customizations need to be performed on Tracer.Builder but you don't want to forgo the rest of the auto-configuration features, TracerBuilderCustomizer comes in handy. It allows the developer to invoke any method of Tracer.Builder (with the exception of build) before the auto-configuration code invokes the build method. Examples of this type of customization can be seen in the B3CodecTracerBuilderCustomizer and ExpandExceptionLogsTracerBuilderCustomizer classes.

Caution

Beware of the default sampler in production

In a high traffic environment, the default sampler that is configured is very unsafe since it samples every request. It is therefore highly recommended to explicitly configure on of the other options in a production environment

Development

Maven checkstyle plugin is used to maintain consistent code style based on Google Style Guides

./mvnw clean install

Tips and tricks

Completely disable tracing

There are times when it might be desirable to completely disable tracing (for example in a testing environment). Due to the multiple (auto)configurations that come into play, this is not as simple as setting opentracing.jaeger.enabled to false.

When one of the starters of this project is included, then io.opentracing.contrib:opentracing-spring-tracer-configuration-starter is also included since it performs some necessary plumbing. However, when opentracing.jaeger.enabled is set to false, then the aforementioned dependency provides a default Tracer implementation that needs the JAEGER_SERVICE_NAME environment variable (see this).

One simple way around this would be to do the add the following Spring configuration:

@ConditionalOnProperty(value = "opentracing.jaeger.enabled", havingValue = "false", matchIfMissing = false)
@Configuration
public class MyTracerConfiguration {

    @Bean
    public io.opentracing.Tracer jaegerTracer() {
        return io.opentracing.noop.NoopTracerFactory.create();
    }
}

In the code above we are activating a io.opentracing.Tracer iff opentracing.jaeger.enabled is set to false. This tracer is necessary to keep the various Spring configurations happy but has been configured to not sample any requests, therefore effectively disabling tracing.

Trace id not propagated via the Feign client

If you are using Feign, in some cases it might be necessary to explicitely expose the Feign client in the Spring configuration, in order to get the uber-trace-id propagated. This can be done easily by adding the following into one of your configuration classes:

@Bean
public Client feignClient() {
    return new Client.Default(null, null);
}

Release

Follow instructions in RELEASE

License

Apache 2.0 License.

java-spring-jaeger's People

Contributors

arseny-tl avatar ask4gilles avatar backjo avatar camelpunch avatar chgl avatar danielwegener avatar davebarda avatar geoand avatar gerloh avatar hannesrakete avatar joakimlofgren avatar jsvk avatar kppullin avatar linhvu1027 avatar magnuskvalheim avatar mdvorak avatar nick-anderssohn avatar otowncaleb avatar pavolloffay avatar samudurand avatar wittwerch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

java-spring-jaeger's Issues

Library generating 256bit traceId

I deployed few services in a k8 cluster and was surprised to see that no traces were visible in jaeger. On checking app logs, I found that traceId being generated was 256 bits long like: "f397a1768f8a0e5a4955c4cdfeda67c3"

However, on an old cluster I have the same services deployed for which I am able to see traces in jaeger and which have 128 bit long trace Ids. For eg. "d64800f409abf213"

We checked all our network and infra configurations. All are the same for both services. Can a 256bit traceId be causing issue for jaeger?

Add links to instrumentation starters to readme

For a project to be able to actually instrument a Spring stack, one or more of the purpose built starters (like io.opentracing.contrib:opentracing-spring-web-starter or io.opentracing.contrib:opentracing-spring-cloud-starter)
would also have to be included in the POM.

If I am here new It's difficult to find a project which provides these starters

When I configure a host that cannot be resolved, the whole application will fail.

I develop an application with K8s and I want to add Jaeger to it. I set the opentracing.jaeger.udp-sender.host to jaeger because I created a backend service named jaeger, and the application works normally.
But I want to leave the backend service to users rather than start it by default. And then I found that when there is no backend service, the application will fail because it can't resolve the address jaeger. The error is like this:

Caused by: java.lang.RuntimeException: TUDPTransport cannot connect:
        at io.jaegertracing.thrift.internal.reporters.protocols.ThriftUdpTransport.newThriftUdpClient(ThriftUdpTransport.java:50) ~[jaeger-thrift-0.30.6.jar!/:na]
        at io.jaegertracing.thrift.internal.senders.UdpSender.<init>(UdpSender.java:57) ~[jaeger-thrift-0.30.6.jar!/:na]
        at io.opentracing.contrib.java.spring.jaeger.starter.JaegerAutoConfiguration.getUdpReporter(JaegerAutoConfiguration.java:113) ~[opentracing-spring-jaeger-starter-0.2.2.jar!/:na]
        at io.opentracing.contrib.java.spring.jaeger.starter.JaegerAutoConfiguration.reporter(JaegerAutoConfiguration.java:93) ~[opentracing-spring-jaeger-starter-0.2.2.jar!/:na]
        at io.opentracing.contrib.java.spring.jaeger.starter.JaegerAutoConfiguration$$EnhancerBySpringCGLIB$$f8d9da63.CGLIB$reporter$4(<generated>) ~[opentracing-spring-jaeger-starter-0.2.2.jar!/:na]
        at io.opentracing.contrib.java.spring.jaeger.starter.JaegerAutoConfiguration$$EnhancerBySpringCGLIB$$f8d9da63$$FastClassBySpringCGLIB$$7aaf2db8.invoke(<generated>) ~[opentracing-spring-jaeger-starter-0.2.2.jar!/:na]
        at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) ~[spring-context-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        at io.opentracing.contrib.java.spring.jaeger.starter.JaegerAutoConfiguration$$EnhancerBySpringCGLIB$$f8d9da63.reporter(<generated>) ~[opentracing-spring-jaeger-starter-0.2.2.jar!/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111]
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
        ... 54 common frames omitted
Caused by: java.net.SocketException: Unresolved address
        at java.net.DatagramSocket.connect(DatagramSocket.java:493) ~[na:1.8.0_111]
        at io.jaegertracing.thrift.internal.reporters.protocols.ThriftUdpTransport.newThriftUdpClient(ThriftUdpTransport.java:48) ~[jaeger-thrift-0.30.6.jar!/:na]
        ... 67 common frames omitted

My goal is that the application can run normally whether there is a backend service or not. How can I reach that? Thank you.

Service name must not be null or empty

I want to disable jaeger span using opentracing-jaeger-enabled: false and no jaeger service name is defined. However I'm getting following error java.lang.IllegalArgumentException: Service name must not be null or empty.

The service name should be check if and only if the enabled flag is set to true.

Reactor support

First of all, many thanks for the lib!

It looks like Reactor is not supported by the library. Another lib supports it based on what has been done in Spring Cloud Sleuth.

Is there a will to support it directly in java-spring-jaeger?

Requests not done from the dispatcher thread?

Using Spring Boot 2.2.0 with opentracing-spring-jaeger-web-starter 2.0.3 to get Spring 5's reactive WebClient instrumented.

I have a REST-endpoint in service A doing this:

webClient.callServiceBAsync() //Returns a flux
    .flatMap(resp -> webClient.callServiceCAsync())
    .flatMap(resp -> webClient.callServiceDAsync())
    .block();

While all four services(A,B,C and D) report their respective span to Jaeger, only A & B can be tied together. I know why this happens. It's because the calls to service C and D are not done in the dispatcher thread. Thus, the scope context is lost(note sure about the right terminology here).

There is a repository called java-concurrent in this project that offers a solution if you're using a Executor. Spring's WebClient however is not using Executors thus am I unable to use anything from that repo.

How do I solve this?

Remote Controller Sampler should have separate configuration fields for host and port

On our K8s clusters, we set up Jaeger-Agent as a DaemonSet. This means that we get the IP address of the agent the following way:

- name: OPENTRACING_JAEGER_UDPSENDER_HOST
  valueFrom:
    fieldRef:
      apiVersion: v1
      fieldPath: status.hostIP

This allows us to inject the hostname fine, which works great for configuring the UdpSender - but it's not easy to inject a combination hostname + port this way, which makes it hard to configure remote sampling. Having separate properties for these two fields would make this kind of use case easier.

Jaeger Span is not marked as an error when exception is handled by ControllerAdvice

Requirement - what kind of business use case are you trying to solve?

Technology stack used in my project:

  • spring boot 2.2.3
  • io.opentracing.contrib:opentracing-spring-jaeger-web-starter:2.0.3
  • spring-boot-starter-webflux

I've spotted that exceptions that are caught by ExceptionHandlers in ControllerAdvice make Jaeger spans look like there was no error at all.

Problem - what in Jaeger blocks you from solving the requirement?

Despite that exception is caught and transformed into ResponseEntity with some custom error object in ControllerAdvice, Jaeger span should be processed (marked) as an error.

Proposal - what do you suggest to solve the problem or improve the existing situation?

The workaround that I applied is that I injected WebFluxSpanDecorator.StandardTags into my ControllerAdvice and decorate spans manually.

Any open questions to address

Is this behavior made by design?
If yes, is there a better way to handle this situation than described in my workaround proposal?

Allow to configure serviceName

The serviceName of the tracer is set to ${spring.application.name} in JaegerAutoConfiguration. It would be great if you would allow that the serviceName can be set to a different value.

Background: Our spring application name is the same on all our environments and all environments send the traces to a single jaeger instance. As all the instances of the app on all environments have the same tracer serviceName it is not possible to configure the sampling rate for each environment. Therefore we need to set the tracer serviceName to something like ${spring.application.name}-${env}

Span information in log fields

I was not able to find that in the doc neither the code: is it possible to add to the logs the span data? E.g. I would like to find the logs corresponding to a trace ID.

Thanks for your help.

No service dependencies shown in jaeger

Hello,

i have a minimal example with 2 Spring Boot Apps where one calls the other.
I can see all spans of the apps in the Jaeger UI, but no dependency between the apps. Shouldn't this already work by autoconfiguration?

Here is a link to the minimal example. If it's not a bug, maybe someone could push me into the right direction at Stackoverflow here :)

Thanks in advance

Config option to disable Jaeger globally?

We are integrating Jaeger into our Spring Boot microservices. However in some cases, like running locally or in test we don't want Jaeger to be enabled.
Is there a config option to disable Jaeger? As a workaround I found the following solution, which allows us to enable/disable it by a custom env variable.

    @Bean
    public io.opentracing.Tracer jaegerTracer() {

        if (Boolean.valueOf(System.getenv("JAEGER_ENABLED"))) {
            return Configuration.fromEnv().getTracer();
        }
        else {
            Reporter reporter = new InMemoryReporter();
            Sampler sampler = new ConstSampler(false);
            return new JaegerTracer.Builder("untraced-service")
                    .withReporter(reporter)
                    .withSampler(sampler)
                    .build();
        }

    }

Can't work in spring cloud gateway

gateway -> consumer -> provider,but can't work in spring cloud gateway。

spring cloud gatway pom

  • version
    <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
    <spring-boot.version>2.1.7.RELEASE</spring-boot.version>
  • pom
<dependency>
    <groupId>io.opentracing.contrib</groupId>
    <artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
    <version>2.0.3</version>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
  • demo code

https://github.com/life-labs/jaeger-example-spring-cloud/tree/master/sc-without-sleuth

Disable reporting spans for actuator endpoints

Hi guys,

When using Jaeger for Spring Cloud Gateway with actuator endpoints enabled (e.g. /actuator/health for K8s readiness probe), all calls to the actuator endpoints produce a span. Is there a way to disable this behaviour?

Config:

        <dependency>
            <groupId>io.opentracing.contrib</groupId>
            <artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

        <dependency>
            <groupId>io.opentracing.contrib</groupId>
            <artifactId>opentracing-spring-cloud-starter</artifactId>
            <version>0.3.2</version>
        </dependency>

Cheers,
Marius

Question about NoopMetricProvider

Hi, pretty new to Jaeger so this may be a poor question.

The doc says "NoopMetricsFactory is used - effectively meaning that no metrics will be collected", yet when I go to http://localhost:16686/metrics I still see a lot of metrics collected so I'm trying to understand what is going on?

Platform support for opentracing-contrib/java-spring-jaeger on PowerPC64LE

Hi,

I am trying to build/install opentracing-contrib/java-spring-jaeger on PPC64LE architecture with Red Hat Enterprise Linux 8.0, using the maven command ./mvnw clean install.

However facing the below issues while loading library for PPC64LE.

06:25:52.440 [main] DEBUG org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader - Unable to load the library '/tmp/liborg-testcontainers-shaded-netty-transport-native-epoll6958178631539929031.so', trying other loading mechanism.
java.lang.UnsatisfiedLinkError: /tmp/liborg-testcontainers-shaded-netty-transport-native-epoll6958178631539929031.so: /tmp/liborg-testcontainers-shaded-netty-transport-native-epoll6958178631539929031.so: cannot open shared object file: No such file or directory (Possible cause: can't load AMD 64-bit .so on a Power PC 64 LE-bit platform)
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
        at java.lang.Runtime.load0(Runtime.java:809)
        at java.lang.System.load(System.java:1086)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:36)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader$1.run(NativeLibraryLoader.java:311)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.loadLibraryByHelper(NativeLibraryLoader.java:303)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:291)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:251)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.loadFirstAvailable(NativeLibraryLoader.java:172)
        at org.testcontainers.shaded.io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:195)
        at org.testcontainers.shaded.io.netty.channel.epoll.Native.<clinit>(Native.java:61)
        at org.testcontainers.shaded.io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:33)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoop.<clinit>(EpollEventLoop.java:53)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:134)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:35)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:84)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:58)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:47)
        at org.testcontainers.shaded.io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:59)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:104)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:91)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:68)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory$UnixDomainSocketInitializer.epollGroup(TestcontainersDockerCmdExecFactory.java:130)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory$UnixDomainSocketInitializer.init(TestcontainersDockerCmdExecFactory.java:122)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory.init(TestcontainersDockerCmdExecFactory.java:89)
        at com.github.dockerjava.core.DockerClientImpl.withDockerCmdExecFactory(DockerClientImpl.java:188)
        at com.github.dockerjava.core.DockerClientBuilder.build(DockerClientBuilder.java:45)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.getClientForConfig(DockerClientProviderStrategy.java:170)
        at org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy.test(EnvironmentAndSystemPropertyClientProviderStrategy.java:39)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.lambda$getFirstValidStrategy$2(DockerClientProviderStrategy.java:111)
        at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:269)
        at java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:303)
        at java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:731)
        at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
        at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
        at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.findAny(ReferencePipeline.java:536)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.getFirstValidStrategy(DockerClientProviderStrategy.java:146)
        at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:100)
        at org.testcontainers.containers.GenericContainer.<init>(GenericContainer.java:142)
        at io.opentracing.contrib.java.spring.web.jaeger.starter.it.JaegerIntegrationTest.<clinit>(JaegerIntegrationTest.java:49)
        at sun.misc.Unsafe.ensureClassInitialized(Native Method)
        at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
        at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:156)
        at java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
        at java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
        at java.lang.reflect.Field.get(Field.java:393)
        at org.junit.runners.model.FrameworkField.get(FrameworkField.java:73)
        at org.junit.runners.model.TestClass.getAnnotatedFieldValues(TestClass.java:230)
        at org.junit.runners.ParentRunner.classRules(ParentRunner.java:255)
        at org.junit.runners.ParentRunner.withClassRules(ParentRunner.java:244)
        at org.junit.runners.ParentRunner.classBlock(ParentRunner.java:194)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:362)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
06:25:52.445 [main] DEBUG org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader - Unable to load the library 'netty-transport-native-epoll', trying next name...
java.lang.UnsatisfiedLinkError: /tmp/liborg-testcontainers-shaded-netty-transport-native-epoll6958178631539929031.so: /tmp/liborg-testcontainers-shaded-netty-transport-native-epoll6958178631539929031.so: cannot open shared object file: No such file or directory (Possible cause: can't load AMD 64-bit .so on a Power PC 64 LE-bit platform)
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
        at java.lang.Runtime.load0(Runtime.java:809)
        at java.lang.System.load(System.java:1086)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:36)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:298)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:251)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.loadFirstAvailable(NativeLibraryLoader.java:172)
        at org.testcontainers.shaded.io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:195)
        at org.testcontainers.shaded.io.netty.channel.epoll.Native.<clinit>(Native.java:61)
        at org.testcontainers.shaded.io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:33)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoop.<clinit>(EpollEventLoop.java:53)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:134)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:35)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:84)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:58)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:47)
        at org.testcontainers.shaded.io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:59)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:104)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:91)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:68)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory$UnixDomainSocketInitializer.epollGroup(TestcontainersDockerCmdExecFactory.java:130)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory$UnixDomainSocketInitializer.init(TestcontainersDockerCmdExecFactory.java:122)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory.init(TestcontainersDockerCmdExecFactory.java:89)
        at com.github.dockerjava.core.DockerClientImpl.withDockerCmdExecFactory(DockerClientImpl.java:188)
        at com.github.dockerjava.core.DockerClientBuilder.build(DockerClientBuilder.java:45)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.getClientForConfig(DockerClientProviderStrategy.java:170)
        at org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy.test(EnvironmentAndSystemPropertyClientProviderStrategy.java:39)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.lambda$getFirstValidStrategy$2(DockerClientProviderStrategy.java:111)
        at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:269)
        at java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:303)
        at java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:731)
        at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
        at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
        at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.findAny(ReferencePipeline.java:536)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.getFirstValidStrategy(DockerClientProviderStrategy.java:146)
        at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:100)
        at org.testcontainers.containers.GenericContainer.<init>(GenericContainer.java:142)
        at io.opentracing.contrib.java.spring.web.jaeger.starter.it.JaegerIntegrationTest.<clinit>(JaegerIntegrationTest.java:49)
        at sun.misc.Unsafe.ensureClassInitialized(Native Method)
        at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
        at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:156)
        at java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
        at java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
        at java.lang.reflect.Field.get(Field.java:393)
        at org.junit.runners.model.FrameworkField.get(FrameworkField.java:73)
        at org.junit.runners.model.TestClass.getAnnotatedFieldValues(TestClass.java:230)
        at org.junit.runners.ParentRunner.classRules(ParentRunner.java:255)
        at org.junit.runners.ParentRunner.withClassRules(ParentRunner.java:244)
        at org.junit.runners.ParentRunner.classBlock(ParentRunner.java:194)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:362)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
06:25:52.449 [main] DEBUG org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader - Unable to load the library 'org-testcontainers-shaded-netty_transport_native_epoll', trying other loading mechanism.
java.lang.UnsatisfiedLinkError: no org-testcontainers-shaded-netty_transport_native_epoll in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader$1.run(NativeLibraryLoader.java:311)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.loadLibraryByHelper(NativeLibraryLoader.java:303)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:291)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:224)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.loadFirstAvailable(NativeLibraryLoader.java:172)
        at org.testcontainers.shaded.io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:195)
        at org.testcontainers.shaded.io.netty.channel.epoll.Native.<clinit>(Native.java:61)
        at org.testcontainers.shaded.io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:33)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoop.<clinit>(EpollEventLoop.java:53)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:134)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:35)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:84)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:58)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:47)
        at org.testcontainers.shaded.io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:59)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:104)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:91)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:68)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory$UnixDomainSocketInitializer.epollGroup(TestcontainersDockerCmdExecFactory.java:130)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory$UnixDomainSocketInitializer.init(TestcontainersDockerCmdExecFactory.java:122)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory.init(TestcontainersDockerCmdExecFactory.java:89)
        at com.github.dockerjava.core.DockerClientImpl.withDockerCmdExecFactory(DockerClientImpl.java:188)
        at com.github.dockerjava.core.DockerClientBuilder.build(DockerClientBuilder.java:45)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.getClientForConfig(DockerClientProviderStrategy.java:170)
        at org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy.test(EnvironmentAndSystemPropertyClientProviderStrategy.java:39)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.lambda$getFirstValidStrategy$2(DockerClientProviderStrategy.java:111)
        at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:269)
        at java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:303)
        at java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:731)
        at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
        at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
        at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.findAny(ReferencePipeline.java:536)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.getFirstValidStrategy(DockerClientProviderStrategy.java:146)
        at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:100)
        at org.testcontainers.containers.GenericContainer.<init>(GenericContainer.java:142)
        at io.opentracing.contrib.java.spring.web.jaeger.starter.it.JaegerIntegrationTest.<clinit>(JaegerIntegrationTest.java:49)
        at sun.misc.Unsafe.ensureClassInitialized(Native Method)
        at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
        at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:156)
        at java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
        at java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
        at java.lang.reflect.Field.get(Field.java:393)
        at org.junit.runners.model.FrameworkField.get(FrameworkField.java:73)
        at org.junit.runners.model.TestClass.getAnnotatedFieldValues(TestClass.java:230)
        at org.junit.runners.ParentRunner.classRules(ParentRunner.java:255)
        at org.junit.runners.ParentRunner.withClassRules(ParentRunner.java:244)
        at org.junit.runners.ParentRunner.classBlock(ParentRunner.java:194)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:362)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
06:25:52.452 [main] DEBUG org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader - Unable to load the library 'netty_transport_native_epoll', trying next name...
java.lang.UnsatisfiedLinkError: no org-testcontainers-shaded-netty_transport_native_epoll in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:298)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:224)
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.loadFirstAvailable(NativeLibraryLoader.java:172)
        at org.testcontainers.shaded.io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:195)
        at org.testcontainers.shaded.io.netty.channel.epoll.Native.<clinit>(Native.java:61)
        at org.testcontainers.shaded.io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:33)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoop.<clinit>(EpollEventLoop.java:53)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:134)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:35)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:84)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:58)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:47)
        at org.testcontainers.shaded.io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:59)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:104)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:91)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:68)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory$UnixDomainSocketInitializer.epollGroup(TestcontainersDockerCmdExecFactory.java:130)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory$UnixDomainSocketInitializer.init(TestcontainersDockerCmdExecFactory.java:122)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory.init(TestcontainersDockerCmdExecFactory.java:89)
        at com.github.dockerjava.core.DockerClientImpl.withDockerCmdExecFactory(DockerClientImpl.java:188)
        at com.github.dockerjava.core.DockerClientBuilder.build(DockerClientBuilder.java:45)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.getClientForConfig(DockerClientProviderStrategy.java:170)
        at org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy.test(EnvironmentAndSystemPropertyClientProviderStrategy.java:39)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.lambda$getFirstValidStrategy$2(DockerClientProviderStrategy.java:111)
        at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:269)
        at java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:303)
        at java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:731)
        at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
        at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
        at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.findAny(ReferencePipeline.java:536)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.getFirstValidStrategy(DockerClientProviderStrategy.java:146)
        at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:100)
        at org.testcontainers.containers.GenericContainer.<init>(GenericContainer.java:142)
        at io.opentracing.contrib.java.spring.web.jaeger.starter.it.JaegerIntegrationTest.<clinit>(JaegerIntegrationTest.java:49)
        at sun.misc.Unsafe.ensureClassInitialized(Native Method)
        at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
        at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:156)
        at java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
        at java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
        at java.lang.reflect.Field.get(Field.java:393)
        at org.junit.runners.model.FrameworkField.get(FrameworkField.java:73)
        at org.junit.runners.model.TestClass.getAnnotatedFieldValues(TestClass.java:230)
        at org.junit.runners.ParentRunner.classRules(ParentRunner.java:255)
        at org.junit.runners.ParentRunner.withClassRules(ParentRunner.java:244)
        at org.junit.runners.ParentRunner.classBlock(ParentRunner.java:194)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:362)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
06:25:52.475 [main] ERROR org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy - ping failed with configuration Environment variables, system properties and defaults. Resolved:
    dockerHost=unix:///var/run/docker.sock
    apiVersion='{UNKNOWN_VERSION}'
    registryUrl='https://index.docker.io/v1/'
    registryUsername='root'
    registryPassword='null'
    registryEmail='null'
    dockerConfig='DefaultDockerClientConfig[dockerHost=unix:///var/run/docker.sock,registryUsername=root,registryPassword=<null>,registryEmail=<null>,registryUrl=https://index.docker.io/v1/,dockerConfigPath=/root/.docker,sslConfig=<null>,apiVersion={UNKNOWN_VERSION},dockerConfig=<null>]'
 due to java.lang.UnsatisfiedLinkError: failed to load the required native library
java.lang.UnsatisfiedLinkError: failed to load the required native library
        at org.testcontainers.shaded.io.netty.channel.epoll.Epoll.ensureAvailability(Epoll.java:78)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoop.<clinit>(EpollEventLoop.java:53)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:134)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.newChild(EpollEventLoopGroup.java:35)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:84)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:58)
        at org.testcontainers.shaded.io.netty.util.concurrent.MultithreadEventExecutorGroup.<init>(MultithreadEventExecutorGroup.java:47)
        at org.testcontainers.shaded.io.netty.channel.MultithreadEventLoopGroup.<init>(MultithreadEventLoopGroup.java:59)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:104)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:91)
        at org.testcontainers.shaded.io.netty.channel.epoll.EpollEventLoopGroup.<init>(EpollEventLoopGroup.java:68)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory$UnixDomainSocketInitializer.epollGroup(TestcontainersDockerCmdExecFactory.java:130)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory$UnixDomainSocketInitializer.init(TestcontainersDockerCmdExecFactory.java:122)
        at org.testcontainers.dockerclient.transport.TestcontainersDockerCmdExecFactory.init(TestcontainersDockerCmdExecFactory.java:89)
        at com.github.dockerjava.core.DockerClientImpl.withDockerCmdExecFactory(DockerClientImpl.java:188)
        at com.github.dockerjava.core.DockerClientBuilder.build(DockerClientBuilder.java:45)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.getClientForConfig(DockerClientProviderStrategy.java:170)
        at org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy.test(EnvironmentAndSystemPropertyClientProviderStrategy.java:39)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.lambda$getFirstValidStrategy$2(DockerClientProviderStrategy.java:111)
        at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:269)
        at java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:303)
        at java.util.stream.Streams$ConcatSpliterator.tryAdvance(Streams.java:731)
        at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
        at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
        at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.findAny(ReferencePipeline.java:536)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.getFirstValidStrategy(DockerClientProviderStrategy.java:146)
        at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:100)
        at org.testcontainers.containers.GenericContainer.<init>(GenericContainer.java:142)
        at io.opentracing.contrib.java.spring.web.jaeger.starter.it.JaegerIntegrationTest.<clinit>(JaegerIntegrationTest.java:49)
        at sun.misc.Unsafe.ensureClassInitialized(Native Method)
        at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
        at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:156)
        at java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
        at java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
        at java.lang.reflect.Field.get(Field.java:393)
        at org.junit.runners.model.FrameworkField.get(FrameworkField.java:73)
        at org.junit.runners.model.TestClass.getAnnotatedFieldValues(TestClass.java:230)
        at org.junit.runners.ParentRunner.classRules(ParentRunner.java:255)
        at org.junit.runners.ParentRunner.withClassRules(ParentRunner.java:244)
        at org.junit.runners.ParentRunner.classBlock(ParentRunner.java:194)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:362)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.ExceptionInInitializerError: null
        at org.testcontainers.shaded.io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:33)
        ... 57 common frames omitted
Caused by: java.lang.IllegalArgumentException: Failed to load any of the given libraries: [netty-transport-native-epoll, netty_transport_native_epoll]
        at org.testcontainers.shaded.io.netty.util.internal.NativeLibraryLoader.loadFirstAvailable(NativeLibraryLoader.java:180)
        at org.testcontainers.shaded.io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:195)
        at org.testcontainers.shaded.io.netty.channel.epoll.Native.<clinit>(Native.java:61)
        ... 58 common frames omitted
06:25:52.478 [main] DEBUG org.testcontainers.dockerclient.DockerClientProviderStrategy - EnvironmentAndSystemPropertyClientProviderStrategy: failed with exception InvalidConfigurationException (ping failed)
06:25:52.479 [main] DEBUG org.testcontainers.dockerclient.DockerClientProviderStrategy - UnixSocketClientProviderStrategy: failed with exception InvalidConfigurationException (ping failed). Root cause NoSuchFileException (/var/run/docker.sock)
06:25:52.480 [main] ERROR org.testcontainers.dockerclient.DockerClientProviderStrategy - Could not find a valid Docker environment. Please check configuration. Attempted configurations were:
06:25:52.480 [main] ERROR org.testcontainers.dockerclient.DockerClientProviderStrategy -     EnvironmentAndSystemPropertyClientProviderStrategy: failed with exception InvalidConfigurationException (ping failed)
06:25:52.480 [main] ERROR org.testcontainers.dockerclient.DockerClientProviderStrategy -     UnixSocketClientProviderStrategy: failed with exception InvalidConfigurationException (ping failed). Root cause NoSuchFileException (/var/run/docker.sock)
06:25:52.480 [main] ERROR org.testcontainers.dockerclient.DockerClientProviderStrategy - As no valid configuration was found, execution cannot continue
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.923 sec <<< FAILURE!
io.opentracing.contrib.java.spring.web.jaeger.starter.it.JaegerIntegrationTest  Time elapsed: 0.922 sec  <<< ERROR!
java.lang.ExceptionInInitializerError
        at sun.misc.Unsafe.ensureClassInitialized(Native Method)
        at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
        at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:156)
        at java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
        at java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
        at java.lang.reflect.Field.get(Field.java:393)
        at org.junit.runners.model.FrameworkField.get(FrameworkField.java:73)
        at org.junit.runners.model.TestClass.getAnnotatedFieldValues(TestClass.java:230)
        at org.junit.runners.ParentRunner.classRules(ParentRunner.java:255)
        at org.junit.runners.ParentRunner.withClassRules(ParentRunner.java:244)
        at org.junit.runners.ParentRunner.classBlock(ParentRunner.java:194)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:362)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.IllegalStateException: Could not find a valid Docker environment. Please see logs and check configuration
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.lambda$getFirstValidStrategy$3(DockerClientProviderStrategy.java:155)
        at java.util.Optional.orElseThrow(Optional.java:290)
        at org.testcontainers.dockerclient.DockerClientProviderStrategy.getFirstValidStrategy(DockerClientProviderStrategy.java:147)
        at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:100)
        at org.testcontainers.containers.GenericContainer.<init>(GenericContainer.java:142)
        at io.opentracing.contrib.java.spring.web.jaeger.starter.it.JaegerIntegrationTest.<clinit>(JaegerIntegrationTest.java:49)
        ... 25 more


Results :

Tests in error:
  io.opentracing.contrib.java.spring.web.jaeger.starter.it.JaegerIntegrationTest

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] io.opentracing.contrib:opentracing-spring-jaeger-parent 2.0.4-SNAPSHOT SUCCESS [ 16.305 s]
[INFO] opentracing-spring-jaeger-starter .................. SUCCESS [ 21.198 s]
[INFO] opentracing-spring-jaeger-cloud-starter ............ SUCCESS [  7.260 s]
[INFO] opentracing-spring-jaeger-web-starter .............. SUCCESS [  0.245 s]
[INFO] opentracing-spring-jaeger-web-starter-it 2.0.4-SNAPSHOT FAILURE [  5.220 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 52.413 s
[INFO] Finished at: 2019-10-04T06:25:52Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project opentracing-spring-jaeger-web-starter-it: There are test failures.
[ERROR]
[ERROR] Please refer to /java-spring-jaeger/opentracing-spring-jaeger-web-starter-it/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :opentracing-spring-jaeger-web-starter-it

Is there any way we can build the particular library for PPC64LE and use that in the build to proceed?

Should we rename it to java-spring-tracer-configuration?

java-spring-web auto-configure contains an auto-configuration which resolves a tracer bean
https://github.com/opentracing-contrib/java-spring-web/blob/master/opentracing-spring-web-autoconfigure/src/main/java/io/opentracing/contrib/spring/web/autoconfig/TracerAutoConfiguration.java#L33.

All auto-configuration in java-spring-web and java-spring-cloud depends on this class. I think it would be better to move it here and keep this project related to tracer bean resolution.

Then jaeger config can depend on the module with TracerAutoConfiguration and fully import it - see https://github.com/opentracing-contrib/java-spring-jaeger/pull/1/files#diff-5cb4f2e88e04516e692b889149318617R54

missing spans with spring boot 2.1.5 and flux WebClient

spring-jaeger-cloud-starter 2.0.0
spring-boot 2.1.5

I have an issue with missing spans that only happens after upgrading from spring boot 2.1.4 to 2.1.5

The application has a rest controller that in turn uses the webflux WebClient to call back to itself (just to demonstrate the issue).

The expected trace is:

- hello
    - GET /world
        - world
            - sleep

With 2.1.5 the outcome is:

- hello
    - Get /world
- sleep

Because the world controller span is missing, its child spans lose their context.

Attached is a project that demonstrates it working with spring boot 2.1.4 and the spans being logged to console.

Run with gradle bootRun and hit localhost:8080/hello

Update the spring boot version to 2.1.5 and repeat to see the "world" span is missing.

spring-cloud-tracing-bug.tar.gz

opentracing.spring.cloud.log.enabled java.util.ConcurrentModificationException

when i use opentracing-spring-jaeger-cloud-starter 0.2.1 ,opentracing-spring-cloud-starter is 0.1.15 ,opentracing.spring.cloud.log.enabled =true, have a bug . bug info
Exception in thread "jaeger.RemoteReporter-QueueProcessor" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
at java.util.ArrayList$Itr.next(ArrayList.java:859)
at java.util.Collections$UnmodifiableCollection$1.next(Collections.java:1042)
at io.jaegertracing.thrift.internal.reporters.protocols.JaegerThriftSpanConverter.buildLogs(JaegerThriftSpanConverter.java:76)
at io.jaegertracing.thrift.internal.reporters.protocols.JaegerThriftSpanConverter.convertSpan(JaegerThriftSpanConverter.java:58)
at io.jaegertracing.thrift.internal.senders.ThriftSender.append(ThriftSender.java:54)
at io.jaegertracing.internal.reporters.RemoteReporter$AppendCommand.execute(RemoteReporter.java:138)
at io.jaegertracing.internal.reporters.RemoteReporter$QueueProcessor.run(RemoteReporter.java:171)
at java.lang.Thread.run(Thread.java:748)

if opentracing.spring.cloud.log.enabled=false will be ok

opentracing-spring-cloud-starter 0.2.0

You versions 0.x.y are meant to be used with Spring Boot 1.5,but opentracing-spring-jaeger-cloud-starter 0.2.2 is use opentracing-spring-cloud-starter 0.2.0,opentracing-spring-cloud-starter 0.2.0 is use Spring Boot 2.x !!!!!!!

Spans are not associated into a single trace

Disclaimer - I may just be doing something wrong....

  • I have 3 Spring Boot web services. Date, Time, and DateTime.
  • DateTime uses Apache Camel to call the Date and Time services.
  • All three of these services are instrumented with the default opentracing-spring-jaeger-cloud-starter dependency.

I have Jaeger running in minikube. I also have the three services above running in minikube using the Jaeger sidecar agent. Each service is in a separate deployment/pod. The orchestration is using native service discovery.

  • The Jaeger Query UI does register the services in its drop down list.
  • When I click "Find Traces" nothing is found.
  • If I grab the spanId from any of the three services, I can search for it and it is found.
  • The spanIds do not seem to be associated in any way. Even when I use the DateTime spanId (which I would expect to see the calls to Date and Time).

Am I doing something wrong here?

Thanks!

Upgrade to jaeger 1.1.0

I noticed issue #48 talks about upgrading to jaeger 0.35.1. I think that issue should have been closed actually since this now uses jaeger 0.35.1. Unfortunately, a couple other high severity CVEs have been discovered in the version of lib-thrift that is used by jaeger 0.35.1. Jaeger 1.1.0 uses a newer version of lib-thrift that doesn't have those CVEs, so hopefully we can upgrade. These are the CVEs I am referring to:

Handle UDP Connection Gracefully

Currently, if a spring service cant connect to jaeger over udp, the service falls over. Opposite to the http, which handles this gracefully.

This happen on boot. Not sure what happens if the service has booted and then loses connectivity.

dependencies
spring-boot => 2.2.5
opentracing-spring-jaeger-cloud-starter => 2.0.3

2020-02-28 19:51:44.777	[main]	o.s.b.w.e.t.TomcatWebServer	INFO 	Tomcat initialized with port(s): 7777 (http)
2020-02-28 19:51:44.815	[main]	o.a.c.h.Http11NioProtocol	INFO 	Initializing ProtocolHandler ["http-nio-7777"]
2020-02-28 19:51:44.817	[main]	o.a.c.c.StandardService	INFO 	Starting service [Tomcat]
2020-02-28 19:51:44.818	[main]	o.a.c.c.StandardEngine	INFO 	Starting Servlet engine: [Apache Tomcat/9.0.31]
2020-02-28 19:51:44.969	[main]	o.a.c.c.C.[.[.[/sample-service]	INFO 	Initializing Spring embedded WebApplicationContext
2020-02-28 19:51:44.970	[main]	o.s.w.c.ContextLoader	INFO 	Root WebApplicationContext: initialization completed in 8800 ms
2020-02-28 19:51:47.076	[main]	o.s.b.w.e.t.TomcatStarter	ERROR	Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'tracingFilter' defined in class path resource [io/opentracing/contrib/spring/web/starter/ServerTracingAutoConfiguration.class]: Unsatisfied dependency expressed through method 'tracingFilter' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'tracer' defined in class path resource [io/opentracing/contrib/java/spring/jaeger/starter/JaegerAutoConfiguration.class]: Unsatisfied dependency expressed through method 'tracer' parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'reporter' defined in class path resource [io/opentracing/contrib/java/spring/jaeger/starter/JaegerAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.jaegertracing.spi.Reporter]: Factory method 'reporter' threw exception; nested exception is java.lang.RuntimeException: TUDPTransport cannot connect:
2020-02-28 19:51:47.137	[main]	o.a.c.c.StandardService	INFO 	Stopping service [Tomcat]
2020-02-28 19:51:47.154	[main]	o.a.c.l.WebappClassLoaderBase	WARN 	The web application [sample-service] appears to have started a thread named [spring.cloud.inetutils] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 java.lang.Thread.run(Thread.java:821)
2020-02-28 19:51:47.158	[main]	o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext	WARN 	Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
2020-02-28 19:51:47.282	[main]	o.s.b.a.l.ConditionEvaluationReportLoggingListener	INFO

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-02-28 19:51:47.297	[main]	o.s.b.SpringApplication	ERROR	Application run failed
org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:156)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
	at com.xxx.sampleservice.Application.main(Application.java:37)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
	at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)
Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:126)
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:88)
	at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:438)
	at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:191)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:180)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:153)
	... 16 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'tracingFilter' defined in class path resource [io/opentracing/contrib/spring/web/starter/ServerTracingAutoConfiguration.class]: Unsatisfied dependency expressed through method 'tracingFilter' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'tracer' defined in class path resource [io/opentracing/contrib/java/spring/jaeger/starter/JaegerAutoConfiguration.class]: Unsatisfied dependency expressed through method 'tracer' parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'reporter' defined in class path resource [io/opentracing/contrib/java/spring/jaeger/starter/JaegerAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.jaegertracing.spi.Reporter]: Factory method 'reporter' threw exception; nested exception is java.lang.RuntimeException: TUDPTransport cannot connect:
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:539)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
	at org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$194/0000000048B78E00.getObject(Unknown Source)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207)
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:211)
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:202)
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans(ServletContextInitializerBeans.java:96)
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.<init>(ServletContextInitializerBeans.java:85)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:253)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:227)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext$$Lambda$483/0000000049251310.onStartup(Unknown Source)
	at org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:53)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5135)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
	at org.apache.catalina.startup.Tomcat.start(Tomcat.java:467)
	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:107)
	... 21 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'tracer' defined in class path resource [io/opentracing/contrib/java/spring/jaeger/starter/JaegerAutoConfiguration.class]: Unsatisfied dependency expressed through method 'tracer' parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'reporter' defined in class path resource [io/opentracing/contrib/java/spring/jaeger/starter/JaegerAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.jaegertracing.spi.Reporter]: Factory method 'reporter' threw exception; nested exception is java.lang.RuntimeException: TUDPTransport cannot connect:
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:539)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
	at org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$194/0000000048B78E00.getObject(Unknown Source)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789)
	... 63 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'reporter' defined in class path resource [io/opentracing/contrib/java/spring/jaeger/starter/JaegerAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.jaegertracing.spi.Reporter]: Factory method 'reporter' threw exception; nested exception is java.lang.RuntimeException: TUDPTransport cannot connect:
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:656)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
	at org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$194/0000000048B78E00.getObject(Unknown Source)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789)
	... 78 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.jaegertracing.spi.Reporter]: Factory method 'reporter' threw exception; nested exception is java.lang.RuntimeException: TUDPTransport cannot connect:
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651)
	... 93 common frames omitted
Caused by: java.lang.RuntimeException: TUDPTransport cannot connect:
	at io.jaegertracing.thrift.internal.reporters.protocols.ThriftUdpTransport.newThriftUdpClient(ThriftUdpTransport.java:50)
	at io.jaegertracing.thrift.internal.senders.UdpSender.<init>(UdpSender.java:57)
	at io.opentracing.contrib.java.spring.jaeger.starter.JaegerAutoConfiguration.getUdpReporter(JaegerAutoConfiguration.java:114)
	at io.opentracing.contrib.java.spring.jaeger.starter.JaegerAutoConfiguration.reporter(JaegerAutoConfiguration.java:94)
	at io.opentracing.contrib.java.spring.jaeger.starter.JaegerAutoConfiguration$$EnhancerBySpringCGLIB$$250710cd.CGLIB$reporter$1(<generated>)
	at io.opentracing.contrib.java.spring.jaeger.starter.JaegerAutoConfiguration$$EnhancerBySpringCGLIB$$250710cd$$FastClassBySpringCGLIB$$694f4e21.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
	at io.opentracing.contrib.java.spring.jaeger.starter.JaegerAutoConfiguration$$EnhancerBySpringCGLIB$$250710cd.reporter(<generated>)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
	... 94 common frames omitted
Caused by: java.net.SocketException: Unresolved address
	at java.net.DatagramSocket.connect(DatagramSocket.java:493)
	at io.jaegertracing.thrift.internal.reporters.protocols.ThriftUdpTransport.newThriftUdpClient(ThriftUdpTransport.java:48)
	... 107 common frames omitted
2020/02/28 19:51:47 Command exited with error: exit status 1

Span is not linked with spring cloud gateway

I am working on microservice architecture

User-------->Spring cloud gateway------------->Service A-------------->Service B

In Jaeger, It shows 2 different spans, one in gateway and other is service A --> Service B
But it should be a single span ie. gateway-----> Service A----->Service B

API gateway is developed using spring cloud gateway
Service A is developed using spring boot
Service B is developed using spring boot

Version info for all 3 application:

compile group: 'commons-lang', name: 'commons-lang', version: '2.6' springBootVersion=2.1.4.RELEASE springDMPVersion=1.0.9.RELEASE springPlatformBomVersion=Cairo-SR8 springCloudVersion=Greenwich.SR1

Custom name for trace-id

Hi!

Is there way to configure opentracing-spring-jaeger-cloud-starter to handle any other header than Uber-Trace-Id? I have Traefik as an ingress in my kubernetes cluster. Traefik can be configured to change traceContextHeaderName. Default value is "uber-trace-id". When I change it to some custom, there is no connection between services. I believe that opentracing works only with Uber-Trace-Id. Is there way to configure that?

Thanks for help!

Global JAEGER_TAGS environment variable is not used by spring starter.

The auto config class (io.opentracing.contrib.java.spring.jaeger.starter.JaegerAutoConfiguration) creates a tracer in such a way that it does not add tags. It also would not use any of the other JAEGER_* env variables that the Jaeger client looks for.

This showed to us by not adding the JAEGER_TAGS to our traces.

java.lang.NoClassDefFoundError: io.opentracing.ScopeManager

Hi Guys!
After installation of either of starters getting a below exception:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'io.opentracing.contrib.spring.tracer.configuration.TracerRegisterAutoConfiguration': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: io.opentracing.ScopeManager

If I comment out the below @bean annotated method:
@bean
public io.opentracing.Tracer jaegerTracer() {
return new Configuration("spring-boot", new Configuration.SamplerConfiguration(ProbabilisticSampler.TYPE, 1),
new Configuration.ReporterConfiguration())
.getTracer();
}
I get an Exception:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'io.opentracing.contrib.java.spring.jaeger.starter.ReporterAppender' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=false)}

Spring boot version: 1.5.3
java-spring-jaeger version: 0.2.2

Could you please help?

JAEGER_SERVICE_NAME from jaeger-operator not respected

The jaeger-operator for Kubernetes modifies app/service containers to have a JAEGER_SERVICE_NAME environment variable. However, java-spring-jaeger wants e.g. OPENTRACING_JAEGER_SERVICE_NAME.

With many microservices, mapping these env vars using beans is a little cumbersome. I'm not sure which project should make it possible to configure the env var name. Do you think it would make sense to respect JAEGER_SERVICE_NAME as well as OPENTRACING_JAEGER_SERVICE_NAME?

[Question] How to cancel span for task

I have a task that executes every second And I don't want this task to be recorded, have any config?

like

@Scheduled(cron = "0 0/1 * * * ? ")

If i missed something, remind me please!!

Thanks any help!!

JaegerAutoConfiguration and @ConditionalOnClass(io.jaegertracing.Tracer.class)

Hi! In trying to adopt opentracing-spring-jaeger-starter I was quite surprised to find JaegerAutoConfiguration has a @ConditionalOnClass(io.jaegertracing.Tracer.class) annotation, which fails to match with newer versions of Jaeger. This silently falls back to a No-OpTracer; a warning would have been nice. :)

It appears the io.jaegertracing.Tracer class was removed from Jaeger-Core in version 0.30.0. Are there any plans to support newer versions of Jaeger? Or should I stick to older versions for now?

When I introduced both the jaeger dependency and the oracle dependency, an error occurred while executing the SQL statement “Object does not wrap anything with requested interface”

I integrated mybatis with oracle in the spring boot project and introduced the jaeger dependency, but the following error occurred while executing the SQL statement:

### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Object does not wrap anything with requested interface
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Object does not wrap anything with requested interface 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Object does not wrap anything with requested interface
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Object does not wrap anything with requested interface
	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)
	at com.sun.proxy.$Proxy164.selectOne(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:159)
	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:87)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:93)
	at com.sun.proxy.$Proxy168.getTestA(Unknown Source)
	at com.xxx.template.service.TableRuleDefinitionService.getTestA(TableRuleDefinitionService.java:19)
	at com.xxx.template.controller.TableRuleDefinitionController.getTableRuleDefinition(TableRuleDefinitionController.java:28)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117)
	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at io.opentracing.contrib.web.servlet.filter.TracingFilter.doFilter(TracingFilter.java:189)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.alibaba.csp.sentinel.adapter.servlet.CommonFilter.doFilter(CommonFilter.java:91)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

The dependencies as follows:

<dependency>
            <groupId>io.opentracing.contrib</groupId>
            <artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
            <version>2.0.3</version>
</dependency>
<dependency>
            <groupId>com.oracle.jdbc</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.1.0.6.0</version>
</dependency>
<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
</dependency>

When I remove the jaeger dependency, It will not report an error again, but our project still wants to use jaeger and oracle at the same time. How can this problem be better solved?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.