Skip to content
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

feat: OTLP bidirectional span links #167

Closed
wants to merge 1 commit into from

Conversation

puckpuck
Copy link

This adds support for bidirectional span links. Currently, a span link is a single direction only, and there is no context in Honeycomb that a span is being linked to. Since span links are just another event in Honeycomb, this will add an additional span link event swapping the trace fields and linked trace fields for the attributes.

Draft: Right now, this works based on the presence of a span link attribute, but that requires customers to add that attribute and does not work for situations where the span link is generated from auto-instrumented code. Before I write the unit tests for this, I would like to discuss if we use the special attribute or create the additional event all the time. I vote for always creating the additional event since this makes rolling out the functionality of bidirectional links automatic for all customers.

@puckpuck puckpuck changed the title OTLP bidirectional span links feat: OTLP bidirectional span links Jan 20, 2023
@puckpuck puckpuck added type: enhancement New feature or request type: discussion Requests for comments, discussions about possible enhancements. labels Jan 20, 2023
@kentquirk
Copy link
Contributor

Hey, Pierre.

I think that because this adds events (which are billable), if we're going to do this we probably need it to be user-controllable. As you've done it here, that's fine because the user decides if they want to set that attribute on a link (although if they're going that far, they can also just do this themselves). But as you note, for autoinstrumentation that's not an option.

Making it configurable gets a little weird because Husky is used by both Refinery and Shepherd; Refinery could be controlled by a config (although we don't currently do anything like that for Husky). Shepherd would require some affordance in the Honeycomb UI.

FWIW, this has come up in OTel discussions as well; it's a recognized issue, although no one has a great solution yet (and it gets extra complicated when sampling is involved). There's a tedious discussion in this issue of span links in the context of sampling.

@MikeGoldsmith
Copy link
Contributor

Closing as this PR has gone stale. We can re-open if we feel it is still something we want to do.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: discussion Requests for comments, discussions about possible enhancements. type: enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants