-
Notifications
You must be signed in to change notification settings - Fork 719
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Decouple from zipkin2.Endpoint #745
Comments
Here is a summary of rationale from chat: Summary:
On validation:
Less dependency exposure to "non-zipkin" integrations:
This is all related to firehose mode: #557 It is also related to Camel which currently manages multiple instances just to override the local service name they are proxying for. https://github.com/apache/camel/blob/master/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinTracer.java#L440 Also this has been reported numerous times sleuth Ex: |
This adds methods that decouple Brave apis from zipkin2.Endpoint: * Tracing.Builder.localIp, localPort for global config * Span.remoteServiceName, parseRemoteIpAndPort for remote endpoint Interally, a MutableEndpoint type is used, though this might be flattened depending on future benchmarks. It is not exposed as a public api. Fixes #745
#747 should fix this |
This adds methods that decouple Brave apis from zipkin2.Endpoint: * Tracing.Builder.localIp, localPort for global config * Span.remoteServiceName, parseRemoteIpAndPort for remote endpoint Interally, a MutableEndpoint type is used, though this might be flattened depending on future benchmarks. It is not exposed as a public api. Fixes #745
This adds methods that decouple Brave apis from zipkin2.Endpoint: * Tracing.Builder.localIp, localPort for global config * Span.remoteServiceName, remoteIpAndPort for remote endpoint Fixes #745
One thing that hurt us updating from zipkin v1 library to zipkin v2 was the Endpoint type. It caused a fair amount of library dancing and a difficult to remove dependency. For example, assigning a remoteEndpoint caused an overload on a close, but still 3rd party type. Moreover, we know people want to change only specific pieces of the endpoint. For example, just the port for services. Sometimes, like in camel or sidecars, folks want to change the local service name. It can be tricky to do this without accidentally messing up the IP information. Finally, whenever this occurs, there's some overhead due to re-allocating Endpoint objects.
The idea here is to decouple the tracing apis from zipkin2.Endpoint types, instead using a brave cover type, which in the case of NoOp does nothing. Underneath a "MutableEndpoint" type would be used in recording which is only conditionally present when overriding defaults. We'd deprecate the existing apis which ask for
zipkin2.Endpoint
for removal in Brave 6.The text was updated successfully, but these errors were encountered: