On zipkin-reporter 3, brave 6 and why

8 views
Skip to first unread message

Adrian Cole

unread,
Jan 9, 2024, 12:28:20 AMJan 9
to zipkin-dev
As you know, zipkin-reporter has a dependency on the same jar used by zipkin server. This will eventually run into a conflict when we need to release the server to a floor JDK > 11, as JDK 11 is the last that compile Java 6.

To help migration, Brave 6 was released with no zipkin dependency at all. This allows it to stay Java 6 regardless of what the server does.

zipkin-reporter is a little messier, as it is used outside brave. Here's what zipkin-reporter 3 does.

zipkin-reporter-brave excluded the io.zipkin2:zipkin dependency, as AsyncZipkinSpanHandler can be used without it when the encoding is JSON_V2. To do that, we had to change some classes, hence zipkin-reporter 3 not zipkin-reporter 2.

spring-cloud-sleuth might not upgrade to either zipkin-reporter 3 or brave 6, as it is past EOL. I get the impression that micrometer and spring-boot will update to the new versions I also raised a PR in opentelemetry-java to move to new versions.

This doesn't complete the decoupling, as it is still the case that brave doesn't pack in a proto encoder. This will eventually need to be fixed. Also, opentelemetry-java doesn't use Brave types for its exporter, rather Zipkin's core type directly. However, all of Spring Boot, Micrometer and OpenTelemetry require at least Java 8. This means that the zipkin jar *could* move up to version 8 even if we need to keep reporter and brave themselves at floor 6 to support old clients a while still.

I'm not going on a campaign to move io.zipkin.zipkin2 to java 8 right now, but I wanted to dump context as I'm no longer working full time on tracing. I hope it helps explain things!

Best,
-Adrian
Reply all
Reply to author
Forward
0 new messages