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

Experimental network.interface.name slipped into stable semconv due to semconv bug #3251

Open
lmolkova opened this issue Jan 24, 2025 · 2 comments
Assignees
Labels
bug Something isn't working needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one.

Comments

@lmolkova
Copy link

lmolkova commented Jan 24, 2025

network.interface.name now appears in the stable part of semantic conventions

static constexpr const char *kNetworkInterfaceName = "network.interface.name";

due to open-telemetry/semantic-conventions#1777 - there was no stability set on it. Combining it with

"exclude_stability": if $filter == "any" then [] else ["experimental"] end,

it results in network.interface.name appearing as stable and it seems to be part of a stable release now.


The question now is how to handle it:

  1. Do a breaking change - this attribute is very new and very unlikely to be used by anyone. Still, this is a reputational problem
    This is easy and can be done with this change similar to Exclude attributes without stability from stable semconv part opentelemetry-python#4391

    - "exclude_stability": if $filter == "any" then [] else ["experimental"] end,
    + "exclude_stability": if $filter == "any" then [] else ["experimental", "", null] end,
  2. Keep it around, hardcode in jinja template as deprecated. Here's how it can be done main...lmolkova:opentelemetry-cpp:workaround-network-interface-name


Additional context:

semconv 1.30.0 are coming out in the next few days and will have this attribute as experimental again. The next codegen would remove this attribute from stable part.

@lmolkova lmolkova added the bug Something isn't working label Jan 24, 2025
@github-actions github-actions bot added the needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. label Jan 24, 2025
@lmolkova lmolkova changed the title network.interface.name slipped into stable semconv due to semconv bug Experimental network.interface.name slipped into stable semconv due to semconv bug Jan 24, 2025
@marcalff marcalff self-assigned this Jan 24, 2025
@marcalff
Copy link
Member

Thanks for the report.

The release notes for opentelemetry-cpp v1.19.0 are now updated with an errata.

This is sufficient in my opinion, there is no need to run code generation again and make a new release just for that, given that this will be resolved with the next code generation.

Keeping this issue opened, to make exclude_stability more defensive as proposed, to prevent similar issues in the future.

@marcalff
Copy link
Member

@lmolkova

The following code:

"exclude_stability": if $filter == "any" then [] else ["experimental", "", null] end,

is very fragile.

Every time a new stability value is added in semantic conventions, like "development", the semantic convention will be treated as stable, right ?

Could weaver expose include_stability instead ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one.
Projects
None yet
Development

No branches or pull requests

2 participants