Skip to content

Releases: openzipkin/brave

brave v3.4.0

10 Jan 13:22
Compare
Choose a tag to compare

Release notes

  • #118 and #121 : Replace TraceFilter with Sampler. The TraceFilter implementation in version <= 3.3.0 works on span id instead of trace id and had different semantics than the samplers used in other implementations. This is changed now and we rely on a default Sampler implementation which is properly tested and benchmarked.
  • #119 : Removes SpanCollector.close
  • #119 : Deprecate SpanCollector.addDefaultAnnotation
  • #120 : Http SpanCollector support.

Migration instructions

  • TraceFilter becomes Sampler:
    • If you don't configure FixedSampleRateTraceFilter today you don't need to change anything. Every request will be traced like before.
    • If you configure FixedSampleRateTraceFilter today to adapt default sample rate your code won't break but your sample ratio will be ignored. Instead you will have to configure Sampler with your sample rate which is a percentage now. For example Sampler.create(0.1f) will sample 10% of requests.
    • If using ZooKeeper you'll need to change your maven dependencies to include brave-sampler-zookeeper module and change to the ZookeeperSampler + re-assign your rate in ZK to a percentage instead of a ratio.
  • Remove of SpanCollector.close: Implementing classes can decide the appropriate way to close a SpanCollector if needed. We don't enforce the Closeable in the interface anymore but you can still add it to you implementation.
  • Deprecation of SpanCollector.addDefaultAnnotation: SpanCollector.addDefaultAnnotation was originally added and used to add a default annotation to every span that indicates the environment (eg staging, testing, production) from which the trace originated. However adding addDefaultAnnotation makes the SpanCollector mutable and harder to implement. Going forward similar functionality can be implemented by decorating your SpanCollector with one that adds the default annotations.
  • Http SpanCollector: The HttpSpanCollector lives in brave-core so you don't need an extra dependency. Can be used to send spans over http to zipkin-java-server. Can be used instead of the Scribe or Kafka SpanCollector.

brave v3.3.0

31 Dec 13:32
Compare
Choose a tag to compare

Release notes:

  • #113 : Kafka SpanCollector implementation. Works together with zipkin-receiver-kafka which is an alternate receiver for zipkin-collector-service to gets spans from a Kafka topic.
  • #117 : ScribeCollectorMetricsHandler is renamed to SpanCollectorMetricsHandler and moved to brave-core + next to ScribeSpanCollector there is also support for accepted / dropped span metrics for the new KafkaSpanCollector.

brave v3.2.0

14 Dec 19:18
Compare
Choose a tag to compare

Release notes:

brave v3.1.0

09 Nov 18:54
Compare
Choose a tag to compare

Improvements:

  • SHA e727576 : Rename project brave-zipkin-spancollector to brave-spancollector-scribe. This rename makes it clear that this span collector is compatible with the scribe protocol. Historically this was the only officially supported protocol but today we also could have http and kafka support. This rename makes this more clear. Technically it is a breaking change as project name and class names change but upgrading is trivial.
  • SHA 144f962 : Support submitting ipv4 address (as integer) and port in Brave.Builder and ThreadLocalServerAndClientSpanState constructors. Before this was not supported in Brave.Builder and ThreadLocalServerAndClientSpanState only supported submitting java.net.InetAddress.
  • #107 : Support new Zipkin protocol additions: Span.timestamp, duration and ca / sa address annotations + implement sa annotation support in brave-mysql.

Bugfixes:

  • #99 : build() method of ServerTracer.Builder is public

brave v3.0.0

20 Sep 13:44
Compare
Choose a tag to compare

For a complete list of changes since brave 2.x, see also release notes for 3.0.0-alpha-1 and 3.0.0-rc-1.

Changes since 3.0.0-rc-1:

  • #93 : Bugfix for Spring ServletHandlerInterceptor
  • #94 : Spring ServletHandlerInterceptor documentation update
  • #96 : Introduce brave-web-servlet sub project which gives better exposure to servlet filter which was hidden in brave-jersey module before. It allows you to use this without Jersey dependencies and has some nice benefits versus Spring filter like can be read in #96
  • #98 : [Breaking] Drops annotation duration support. Duration support caused many issues in the Zipkin stack and was not fully supported. More background information can be found here.
  • SHA b40a5d6 : Zipkin span collector bugfix which caused flaky integration tests. All integration tests are enabled again.

brave 3.0.0-rc-1

31 Aug 18:39
Compare
Choose a tag to compare

Feature complete Release Candidate for brave v3.0.0.

This release removes quite a lot of code and complexity while maintaining same functionality + it makes it nicer to integrate with less dependencies!

This release is meant to give users the possibility to try out and give final remarks.
If you upgrade from brave 2.x you can read release notes of brave 3.0.0 alpha1 for completeness.

List of changes:

  • brave-core is dependency free except for libthrift. This should make it easier to integrate even in mobile apps (eg Android).
  • Finalization of brave-http which makes it easier to integrate in http libraries, avoids code duplication, and makes implementations uniform.
  • [Breaking] : Removal of com.github.kristofa.brave.client package. This can break your integration but switching to brave-http should leave you with cleaner and less code to maintain.
  • [Breaking] X-B3-Sampled header value is compatible with Zipkin spec. This also means integration with brave 2.x will fail.
  • Rework all http implementations to use new brave-core interceptors together with brave-http adapters
  • Module changes:
    • brave-impl-spring becomes brave-core-spring
    • New module: brave-spring-resttemplate-interceptors which adds Spring rest template support
    • New module: brave-spring-web-servlet-interceptor. This interceptor was previously part of brave-core-spring. Move to separate module.
  • Remove brave 2 thread duration annotation support
  • TraceFilter trace methods takes span id param next to span name
  • [Breaking] Better Brave setup and no more EndpointSubmitter
    • The Brave class is not a class with static access methods anymore but uses a Builder to configure and build the Brave object with your custom configuration.
    • Having to use the EndpointSubmitter felt out of place. The endpoint is setup during initialization of the Brave object now.
    • Possibility to configure custom ServerAndClientSpanState which keeps track of tracing state.

To get you up to speed with the changes it is advised to read brave-core and brave-core-spring readme and look at existing integrations.

brave 3.0.0-alpha1

21 Jun 14:47
Compare
Choose a tag to compare

First public release of brave 3.0.0. It is an Alpha release as it is not feature complete yet.
Components are available in Maven Central.

This is a breaking change when coming from brave 2.x. However the changes you need to do to upgrade should be minimal and expected to be straight forward.

List of changes:

  • [Breaking change] Java 7 bytecode (was Java 6 for brave 2.x). Build and release was done using Java 8.
  • Module changes:
    • flume-zipkin-collector-sink is extracted from brave project and lives in separate repo now
    • flume-zipkin-metrics-sink is extracted from brave project and lives in separate repo now
    • brave-interfaces and brave-impl have been merged into new module: brave-core
    • brave-client module is renamed into brave-http as it was very http focused anyway
  • Upgrade modules that depend on Spring to use Spring 4.1.6.RELEASE. However the Spring dependencies have scope provided and you are not forced to update from Spring 3 if you don't want to. All Spring dependent modules should also still work with Spring 3.2.2.RELEASE or later.
  • Groundwork for new client and server abstractions that are not http specific. These classes and interfaces (ServerRequestInterceptor, ServerResponseInterceptor, ClientRequestInterceptor, ClientResponseInterceptor) live in brave-core but are not integrated yet. This will be for next alpha or beta release.
  • Contributions by @adriancole . Big thanks!
    • Introduce animal-sniffer Maven plugin to make sure we don't accidently introduce Java 8 features in brave-core.
    • Remove guava as a dependency.
    • [Breaking change] Consolidate Impl classes and interfaces in brave-core : Interfaces which really only have and need 1 implementation have been merged into single class (interface becomes class)
    • [Breaking change] Introduce Google AutoValue which removes lots of boilerplate code and also enabled the removal of commons-lang3 dependency \o/.
    • [Breaking change] Rename EndPointSubmitter to EndpointSubmitter.

brave-resteasy-example has been updated to use brave 3.0.0-alpha1.

For a list of what's left to do for brave 3.0.0, see #59

brave 2.4.2

24 Feb 20:49
Compare
Choose a tag to compare
  • Bugfix: Update jersey implementation to make sure unexpected exceptions in Brave have no impact on application. #57
  • Bugfix: Make sure using more than 1 thread on ZipkinSpanCollector works. #64

brave 2.4.1

21 Feb 12:01
Compare
Choose a tag to compare
  • Bugfix for Spring server side support: support negative trace ids. #53
  • Bugfix for Spring server side support: don't assume a parent id is always present. #52

brave 2.4

21 Feb 12:00
Compare
Choose a tag to compare
  • New feature: Add server side tracing support for Spring mvc based services. #42
  • New feature: Add MySQL support (trace queries). #43
  • Improvement: Don't enforce log4j to users of brave. Make dependency provided. #41
  • New feature: Add Jersey 2 support #38
  • New feature: Add new SpanNameFilter that uses pattern matching. #46
  • Bugfix: Make conversion of negative span id's from long <-> String compatible with zipkin / Finagle. #39
  • New feature: RestEasy 3 implementation. #48