Releases: openzipkin/brave
brave v3.4.0
Release notes
- #118 and #121 : Replace
TraceFilter
withSampler
. 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 defaultSampler
implementation which is properly tested and benchmarked. - #119 : Removes
SpanCollector.close
- #119 : Deprecate
SpanCollector.addDefaultAnnotation
- #120 : Http SpanCollector support.
Migration instructions
TraceFilter
becomesSampler
:- 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 configureSampler
with your sample rate which is a percentage now. For exampleSampler.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 theZookeeperSampler
+ re-assign your rate in ZK to a percentage instead of a ratio.
- If you don't configure
- Remove of
SpanCollector.close
: Implementing classes can decide the appropriate way to close a SpanCollector if needed. We don't enforce theCloseable
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 addingaddDefaultAnnotation
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 inbrave-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
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 toSpanCollectorMetricsHandler
and moved tobrave-core
+ next toScribeSpanCollector
there is also support for accepted / dropped span metrics for the newKafkaSpanCollector
.
brave v3.2.0
Release notes:
- #101 :
ScribeSpanCollector
supports tracking number of accepted and number of dropped spans. For more details see brave-spancollector-scribe/README.md (Monitoring section). - #112 / #114 : Local span support. See also LocalTracer documentation.
brave v3.1.0
Improvements:
- SHA e727576 : Rename project
brave-zipkin-spancollector
tobrave-spancollector-scribe
. This rename makes it clear that this span collector is compatible with thescribe
protocol. Historically this was the only officially supported protocol but today we also could havehttp
andkafka
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
andThreadLocalServerAndClientSpanState
constructors. Before this was not supported inBrave.Builder
andThreadLocalServerAndClientSpanState
only supported submittingjava.net.InetAddress
. - #107 : Support new Zipkin protocol additions:
Span.timestamp
,duration
andca / sa address annotations
+ implementsa
annotation support inbrave-mysql
.
Bugfixes:
- #99 :
build()
method ofServerTracer.Builder
is public
brave v3.0.0
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
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 tobrave-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 withbrave-http
adapters - Module changes:
brave-impl-spring
becomesbrave-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 ofbrave-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 moreEndpointSubmitter
- 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 theBrave
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
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 nowflume-zipkin-metrics-sink
is extracted from brave project and lives in separate repo nowbrave-interfaces
andbrave-impl
have been merged into new module:brave-core
brave-client
module is renamed intobrave-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 inbrave-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
andinterfaces
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
toEndpointSubmitter
.
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
brave 2.4.1
brave 2.4
- 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