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

opentelemetry: enforce event_location for span tags #2124

Merged
merged 3 commits into from
May 20, 2022

Conversation

DevinCarr
Copy link
Contributor

@DevinCarr DevinCarr commented May 12, 2022

The with_event_location(false) method will now properly omit code.* tags from spans.

Motivation

Recently, I attempted to remove the code.* tags from opentelemetry tracing spans utilizing the with_event_location of OpenTelemetrySubscriber. This did not work as expected because the on_new_span doesn't account for the event_location boolean similar to how on_event does.

Solution

The change presented will expand the use of the event_location to check before adding the code.* KeyValue attributes in on_new_span.

Testing

Additional unit tests are included in tracing-opentelemetry/src/subscriber.rs to cover both boolean cases of with_event_location.

The `with_event_location` method will now properly omit `code.*` tags from spans.
@DevinCarr DevinCarr requested review from jtescher and a team as code owners May 12, 2022 21:34
@DevinCarr DevinCarr changed the title opentelemetry: enforce event_location for root span tags opentelemetry: enforce event_location for span tags May 12, 2022
Copy link
Member

@hawkw hawkw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change looks correct to me.

I do have one thought about the API, though: the name of the method is with_event_location, but now it controls whether locations are included for both events and spans. It seems like it would make more sense if we did one of the following:

  • rename the method to just with_location
  • have separate with_event_location and with_span_location methods

Which choice is the correct one depends a bit on whether we think users would want to control whether locations are included for events and spans separately --- which, IMO, doesn't really seem necessary. I think we should probably just rename the method to with_location (leaving a deprecated version of with_event_location that says "renamed to with_location", to avoid a breaking change), unless we think people are going to want to configure these separately.

cc @jtescher what do you think?

Copy link
Member

@hawkw hawkw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I went ahead and renamed the method to with_location. This looks good to me now, thanks for the fix!

@hawkw hawkw enabled auto-merge (squash) May 20, 2022 18:23
@hawkw hawkw disabled auto-merge May 20, 2022 18:51
@hawkw hawkw merged commit 49d4bf6 into tokio-rs:master May 20, 2022
@DevinCarr DevinCarr deleted the otel-span-event-location branch May 24, 2022 03:57
hawkw pushed a commit that referenced this pull request Jun 6, 2022
The `with_event_location(false)` method will now properly omit `code.*`
tags from spans.

## Motivation

Recently, I attempted to remove the `code.*` tags from opentelemetry
tracing spans utilizing the [`with_event_location`] of
OpenTelemetrySubscriber. This did not work as expected because the
[`on_new_span`] doesn't account for the `event_location` boolean similar
to how [`on_event`] does.

## Solution

The change presented will expand the use of the `location` field to
check before adding the `code.*` KeyValue attributes in `on_new_span`.

In addition, `with_event_location` was renamed to `with_location`, as it
now controls both span *and* event locations, and the
`with_event_location` method has been deprecated.

## Testing

Additional unit tests are included in
[tracing-opentelemetry/src/subscriber.rs] to cover both boolean cases of
`with_location`.

[`with_event_location`]: https://github.com/tokio-rs/tracing/blob/master/tracing-opentelemetry/src/subscriber.rs#L343
[`on_new_span`]: https://github.com/tokio-rs/tracing/blob/master/tracing-opentelemetry/src/subscriber.rs#L448-L460
[`on_event`]: https://github.com/tokio-rs/tracing/blob/master/tracing-opentelemetry/src/subscriber.rs#L582
[tracing-opentelemetry/src/subscriber.rs]: https://github.com/tokio-rs/tracing/pull/2124/files#diff-69011e8b23dffcbe19b9b72e5ac54330a7871f424a90700ed7f5c5686daf431bR911-R975)
hawkw pushed a commit that referenced this pull request Jun 7, 2022
The `with_event_location(false)` method will now properly omit `code.*`
tags from spans.

## Motivation

Recently, I attempted to remove the `code.*` tags from opentelemetry
tracing spans utilizing the [`with_event_location`] of
OpenTelemetrySubscriber. This did not work as expected because the
[`on_new_span`] doesn't account for the `event_location` boolean similar
to how [`on_event`] does.

## Solution

The change presented will expand the use of the `location` field to
check before adding the `code.*` KeyValue attributes in `on_new_span`.

In addition, `with_event_location` was renamed to `with_location`, as it
now controls both span *and* event locations, and the
`with_event_location` method has been deprecated.

## Testing

Additional unit tests are included in
[tracing-opentelemetry/src/subscriber.rs] to cover both boolean cases of
`with_location`.

[`with_event_location`]: https://github.com/tokio-rs/tracing/blob/master/tracing-opentelemetry/src/subscriber.rs#L343
[`on_new_span`]: https://github.com/tokio-rs/tracing/blob/master/tracing-opentelemetry/src/subscriber.rs#L448-L460
[`on_event`]: https://github.com/tokio-rs/tracing/blob/master/tracing-opentelemetry/src/subscriber.rs#L582
[tracing-opentelemetry/src/subscriber.rs]: https://github.com/tokio-rs/tracing/pull/2124/files#diff-69011e8b23dffcbe19b9b72e5ac54330a7871f424a90700ed7f5c5686daf431bR911-R975)
hawkw added a commit that referenced this pull request Jun 7, 2022
# 0.17.3 (June 7, 2022)

This release adds support for emitting thread names and IDs to
OpenTelemetry, as well as recording `std::error::Error` values in a
structured manner with their source chain included. Additionally, this
release fixes issues related to event and span source code locations.

### Added

- `Layer::with_threads` to enable recording thread names/IDs according
  to [OpenTelemetry semantic conventions][thread-semconv] ([#2134])
- `Error::source` chain when recording `std::error::Error` values
  ([#2122])
- `Layer::with_location` method (replaces `Layer::with_event_location`)
  ([#2124])

### Changed

- `std::error::Error` values are now recorded using `fmt::Display`
  rather than `fmt::Debug` ([#2122])

### Fixed

- Fixed event source code locations overwriting the parent span's source
  location ([#2099])
- Fixed `Layer::with_event_location` not controlling whether locations
  are emitted for spans as well as events ([#2124])

### Deprecated

- `Layer::with_event_location`: renamed to `Layer::with_location`, as it
  now controls both span and event locations ([#2124])

[thread-semconv]: https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/span-general/#source-code-attributes
[#2134]: #2134
[#2122]: #2122
[#2124]: #2124
[#2099]: #2099
hawkw added a commit that referenced this pull request Jun 7, 2022
# 0.17.3 (June 7, 2022)

This release adds support for emitting thread names and IDs to
OpenTelemetry, as well as recording `std::error::Error` values in a
structured manner with their source chain included. Additionally, this
release fixes issues related to event and span source code locations.

### Added

- `Layer::with_threads` to enable recording thread names/IDs according
  to [OpenTelemetry semantic conventions][thread-semconv] ([#2134])
- `Error::source` chain when recording `std::error::Error` values
  ([#2122])
- `Layer::with_location` method (replaces `Layer::with_event_location`)
  ([#2124])

### Changed

- `std::error::Error` values are now recorded using `fmt::Display`
  rather than `fmt::Debug` ([#2122])

### Fixed

- Fixed event source code locations overwriting the parent span's source
  location ([#2099])
- Fixed `Layer::with_event_location` not controlling whether locations
  are emitted for spans as well as events ([#2124])

### Deprecated

- `Layer::with_event_location`: renamed to `Layer::with_location`, as it
  now controls both span and event locations ([#2124])

Thanks to new contributors @lilymara-onesignal, @hubertbudzynski, 
and @DevinCarr for contributing to this release!

[thread-semconv]: https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/span-general/#source-code-attributes
[#2134]: #2134
[#2122]: #2122
[#2124]: #2124
[#2099]: #2099
davidbarsky pushed a commit to tokio-rs/tracing-opentelemetry that referenced this pull request Mar 21, 2023
# 0.17.3 (June 7, 2022)

This release adds support for emitting thread names and IDs to
OpenTelemetry, as well as recording `std::error::Error` values in a
structured manner with their source chain included. Additionally, this
release fixes issues related to event and span source code locations.

### Added

- `Layer::with_threads` to enable recording thread names/IDs according
  to [OpenTelemetry semantic conventions][thread-semconv] ([#2134])
- `Error::source` chain when recording `std::error::Error` values
  ([#2122])
- `Layer::with_location` method (replaces `Layer::with_event_location`)
  ([#2124])

### Changed

- `std::error::Error` values are now recorded using `fmt::Display`
  rather than `fmt::Debug` ([#2122])

### Fixed

- Fixed event source code locations overwriting the parent span's source
  location ([#2099])
- Fixed `Layer::with_event_location` not controlling whether locations
  are emitted for spans as well as events ([#2124])

### Deprecated

- `Layer::with_event_location`: renamed to `Layer::with_location`, as it
  now controls both span and event locations ([#2124])

Thanks to new contributors @lilymara-onesignal, @hubertbudzynski, 
and @DevinCarr for contributing to this release!

[thread-semconv]: https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/span-general/#source-code-attributes
[#2134]: tokio-rs/tracing#2134
[#2122]: tokio-rs/tracing#2122
[#2124]: tokio-rs/tracing#2124
[#2099]: tokio-rs/tracing#2099
kaffarell pushed a commit to kaffarell/tracing that referenced this pull request May 22, 2024
The `with_event_location(false)` method will now properly omit `code.*`
tags from spans.

## Motivation

Recently, I attempted to remove the `code.*` tags from opentelemetry
tracing spans utilizing the [`with_event_location`] of
OpenTelemetrySubscriber. This did not work as expected because the
[`on_new_span`] doesn't account for the `event_location` boolean similar
to how [`on_event`] does.

## Solution

The change presented will expand the use of the `location` field to
check before adding the `code.*` KeyValue attributes in `on_new_span`.

In addition, `with_event_location` was renamed to `with_location`, as it
now controls both span *and* event locations, and the
`with_event_location` method has been deprecated.

## Testing

Additional unit tests are included in
[tracing-opentelemetry/src/subscriber.rs] to cover both boolean cases of
`with_location`.

[`with_event_location`]: https://github.com/tokio-rs/tracing/blob/master/tracing-opentelemetry/src/subscriber.rs#L343
[`on_new_span`]: https://github.com/tokio-rs/tracing/blob/master/tracing-opentelemetry/src/subscriber.rs#L448-L460
[`on_event`]: https://github.com/tokio-rs/tracing/blob/master/tracing-opentelemetry/src/subscriber.rs#L582
[tracing-opentelemetry/src/subscriber.rs]: https://github.com/tokio-rs/tracing/pull/2124/files#diff-69011e8b23dffcbe19b9b72e5ac54330a7871f424a90700ed7f5c5686daf431bR911-R975)
kaffarell pushed a commit to kaffarell/tracing that referenced this pull request May 22, 2024
# 0.17.3 (June 7, 2022)

This release adds support for emitting thread names and IDs to
OpenTelemetry, as well as recording `std::error::Error` values in a
structured manner with their source chain included. Additionally, this
release fixes issues related to event and span source code locations.

### Added

- `Layer::with_threads` to enable recording thread names/IDs according
  to [OpenTelemetry semantic conventions][thread-semconv] ([tokio-rs#2134])
- `Error::source` chain when recording `std::error::Error` values
  ([tokio-rs#2122])
- `Layer::with_location` method (replaces `Layer::with_event_location`)
  ([tokio-rs#2124])

### Changed

- `std::error::Error` values are now recorded using `fmt::Display`
  rather than `fmt::Debug` ([tokio-rs#2122])

### Fixed

- Fixed event source code locations overwriting the parent span's source
  location ([tokio-rs#2099])
- Fixed `Layer::with_event_location` not controlling whether locations
  are emitted for spans as well as events ([tokio-rs#2124])

### Deprecated

- `Layer::with_event_location`: renamed to `Layer::with_location`, as it
  now controls both span and event locations ([tokio-rs#2124])

Thanks to new contributors @lilymara-onesignal, @hubertbudzynski, 
and @DevinCarr for contributing to this release!

[thread-semconv]: https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/span-general/#source-code-attributes
[tokio-rs#2134]: tokio-rs#2134
[tokio-rs#2122]: tokio-rs#2122
[tokio-rs#2124]: tokio-rs#2124
[tokio-rs#2099]: tokio-rs#2099
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants