feat!: Rename deprecated net. span attributes - #23301
Conversation
|
bugbot run |
|
|
||
| String and regular-expression matching for `tracePropagationTargets` is now case-insensitive. | ||
|
|
||
| ### Span attribute changes |
There was a problem hiding this comment.
I added all already existing entries regarding attribute changes under this heading.
size-limit report 📦
|
# Conflicts: # packages/node/src/integrations/tracing/redis/cache.ts
|
bugbot run |
JPeer264
left a comment
There was a problem hiding this comment.
LGTM. Just got smol suggestions. Also the title should have a !
net. span attributesnet. span attributes
Part of the v11 migration away from attributes `@sentry/conventions` marks deprecated. Scoped to the `http.*` attributes on HTTP spans; the `net.*` attributes are migrated separately in #23301. Straight renames: `http.method` -> `http.request.method`, `http.status_code` -> `http.response.status_code`, `http.scheme` -> `url.scheme`, `http.user_agent` -> `user_agent.original`, `http.response_content_length` -> `http.response.body.size`, `http.response_transfer_size` -> `http.response.size`, and `url.same_origin` -> `http.request.same_origin`. `http.request_content_length`, `http.request_content_length_uncompressed`, `http.response_content_length_uncompressed` and `http.status_text` are left alone — they are not in `@sentry/conventions` at all, so they have no replacement to move to. Three cases needed more than a rename: - `http.target` carried pathname *and* query, while `url.path` is the pathname only. The core server span set neither `url.query` nor `url.fragment`, so dropping `http.target` would have lost the query — it now sets both, which the node server span already did. - Consumers that matched on `http.target` were repointed at `url.path`: the react-router low-quality-transaction filter and the TanStack Start tunnel-route filter, both `ignoreSpans` rules against our own spans that would otherwise have silently stopped matching. The Next.js readers keep `http.target` as a fallback behind a `url.path` primary, since they also see spans from a user's own OpenTelemetry instrumentation. All other read-side fallbacks are untouched for the same reason. - `http.host`, `http.flavor` and `http.client_ip` are dropped without a replacement being set here. Their replacements — `server.address`, `network.protocol.version` and `client.address` — are introduced by #23301, so setting them here too would mean two PRs writing the same keys with different values. `SanitizedRequestData`, the shape backing `http` breadcrumb data, now keys the method as `http.request.method`. Span attributes in the touched files are now imported from `@sentry/conventions/attributes` rather than written as string literals. That is what surfaced `url.same_origin` as deprecated; as a literal it was invisible. `no-unfiltered-url-attributes` no longer guards `http.target`: nothing sets it, and its replacement `url.path` is a bare pathname with no query to filter. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Develop landed the same `net.*` -> `server.*`/`network.*` rename for db and messaging spans (#23422), plus a `db.*` rename (#23408) and a restructure of the redis/mysql2/mongoose integrations, so that half of this branch is superseded. Conflicts in `packages/server-utils` and the db/messaging test assertions resolve to develop's version; the orchestrion e2e test apps develop deleted in #23349 stay deleted. `docs/migration/v11-end-state.md` keeps this branch's sectioned layout and `net.*` mapping table with develop's added entries folded in. The branch's own work - the HTTP server and client network attributes in core, node, cloudflare and deno - is unaffected. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
| newAttributes[SERVER_PORT] = localPort; | ||
| newAttributes[NETWORK_LOCAL_ADDRESS] = localAddress; | ||
| newAttributes[NETWORK_LOCAL_PORT] = localPort; | ||
| newAttributes[CLIENT_ADDRESS] = collectClientAddress ? remoteAddress : undefined; |
There was a problem hiding this comment.
client.address should hold the real client address behind any intermediary like a proxy (per otel spec). Since client.address is an alias of http.client_ip, we could just do the same as with http.client_ip in line 186 (which will be removed in #23423) and set the IP from the x-forwarded-for header instead (and maybe keep the socket's address as a fallback)
|
bugbot run |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 6842701. Configure here.
Part of the v11 migration away from attributes `@sentry/conventions` marks deprecated. Scoped to the `http.*` attributes on HTTP spans; the `net.*` attributes are migrated separately in #23301. Straight renames: `http.method` -> `http.request.method`, `http.status_code` -> `http.response.status_code`, `http.scheme` -> `url.scheme`, `http.user_agent` -> `user_agent.original`, `http.response_content_length` -> `http.response.body.size`, `http.response_transfer_size` -> `http.response.size`, and `url.same_origin` -> `http.request.same_origin`. `http.request_content_length`, `http.request_content_length_uncompressed`, `http.response_content_length_uncompressed` and `http.status_text` are left alone — they are not in `@sentry/conventions` at all, so they have no replacement to move to. Three cases needed more than a rename: - `http.target` carried pathname *and* query, while `url.path` is the pathname only. The core server span set neither `url.query` nor `url.fragment`, so dropping `http.target` would have lost the query — it now sets both, which the node server span already did. - Consumers that matched on `http.target` were repointed at `url.path`: the react-router low-quality-transaction filter and the TanStack Start tunnel-route filter, both `ignoreSpans` rules against our own spans that would otherwise have silently stopped matching. The Next.js readers keep `http.target` as a fallback behind a `url.path` primary, since they also see spans from a user's own OpenTelemetry instrumentation. All other read-side fallbacks are untouched for the same reason. - `http.host`, `http.flavor` and `http.client_ip` are dropped without a replacement being set here. Their replacements — `server.address`, `network.protocol.version` and `client.address` — are introduced by #23301, so setting them here too would mean two PRs writing the same keys with different values. `SanitizedRequestData`, the shape backing `http` breadcrumb data, now keys the method as `http.request.method`. Span attributes in the touched files are now imported from `@sentry/conventions/attributes` rather than written as string literals. That is what surfaced `url.same_origin` as deprecated; as a literal it was invisible. `no-unfiltered-url-attributes` no longer guards `http.target`: nothing sets it, and its replacement `url.path` is a bare pathname with no query to filter. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Part of the v11 migration away from attributes `@sentry/conventions` marks deprecated. Scoped to the `http.*` attributes on HTTP spans; the `net.*` attributes are migrated separately in #23301. Straight renames: `http.method` -> `http.request.method`, `http.status_code` -> `http.response.status_code`, `http.scheme` -> `url.scheme`, `http.user_agent` -> `user_agent.original`, `http.response_content_length` -> `http.response.body.size`, `http.response_transfer_size` -> `http.response.size`, and `url.same_origin` -> `http.request.same_origin`. `http.request_content_length`, `http.request_content_length_uncompressed`, `http.response_content_length_uncompressed` and `http.status_text` are left alone — they are not in `@sentry/conventions` at all, so they have no replacement to move to. Three cases needed more than a rename: - `http.target` carried pathname *and* query, while `url.path` is the pathname only. The core server span set neither `url.query` nor `url.fragment`, so dropping `http.target` would have lost the query — it now sets both, which the node server span already did. - Consumers that matched on `http.target` were repointed at `url.path`: the react-router low-quality-transaction filter and the TanStack Start tunnel-route filter, both `ignoreSpans` rules against our own spans that would otherwise have silently stopped matching. The Next.js readers keep `http.target` as a fallback behind a `url.path` primary, since they also see spans from a user's own OpenTelemetry instrumentation. All other read-side fallbacks are untouched for the same reason. - `http.host`, `http.flavor` and `http.client_ip` are dropped without a replacement being set here. Their replacements — `server.address`, `network.protocol.version` and `client.address` — are introduced by #23301, so setting them here too would mean two PRs writing the same keys with different values. `SanitizedRequestData`, the shape backing `http` breadcrumb data, now keys the method as `http.request.method`. Span attributes in the touched files are now imported from `@sentry/conventions/attributes` rather than written as string literals. That is what surfaced `url.same_origin` as deprecated; as a literal it was invisible. `no-unfiltered-url-attributes` no longer guards `http.target`: nothing sets it, and its replacement `url.path` is a bare pathname with no query to filter. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Part of the v11 migration away from attributes `@sentry/conventions` marks deprecated. Scoped to the `http.*` attributes on HTTP spans; the `net.*` attributes are migrated separately in #23301. Straight renames: `http.method` -> `http.request.method`, `http.status_code` -> `http.response.status_code`, `http.scheme` -> `url.scheme`, `http.user_agent` -> `user_agent.original`, `http.response_content_length` -> `http.response.body.size`, `http.response_transfer_size` -> `http.response.size`, and `url.same_origin` -> `http.request.same_origin`. `http.request_content_length`, `http.request_content_length_uncompressed`, `http.response_content_length_uncompressed` and `http.status_text` are left alone — they are not in `@sentry/conventions` at all, so they have no replacement to move to. Three cases needed more than a rename: - `http.target` carried pathname *and* query, while `url.path` is the pathname only. The core server span set neither `url.query` nor `url.fragment`, so dropping `http.target` would have lost the query — it now sets both, which the node server span already did. - Consumers that matched on `http.target` were repointed at `url.path`: the react-router low-quality-transaction filter and the TanStack Start tunnel-route filter, both `ignoreSpans` rules against our own spans that would otherwise have silently stopped matching. The Next.js readers keep `http.target` as a fallback behind a `url.path` primary, since they also see spans from a user's own OpenTelemetry instrumentation. All other read-side fallbacks are untouched for the same reason. - `http.host`, `http.flavor` and `http.client_ip` are dropped without a replacement being set here. Their replacements — `server.address`, `network.protocol.version` and `client.address` — are introduced by #23301, so setting them here too would mean two PRs writing the same keys with different values. `SanitizedRequestData`, the shape backing `http` breadcrumb data, now keys the method as `http.request.method`. Span attributes in the touched files are now imported from `@sentry/conventions/attributes` rather than written as string literals. That is what surfaced `url.same_origin` as deprecated; as a literal it was invisible. `no-unfiltered-url-attributes` no longer guards `http.target`: nothing sets it, and its replacement `url.path` is a bare pathname with no query to filter. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Related to Linear: https://linear.app/getsentry/issue/SDK-1348/align-network-span-attributes | v10 attribute | v11 attribute | | --------------- | ----------------------- | | `net.host.name` | `server.address` | | `net.host.ip` | `network.local.address` | | `net.host.port` | `network.local.port` | | `net.peer.name` | `server.address` | | `net.peer.ip` | `network.peer.address` | | `net.peer.port` | `network.peer.port` | | `net.transport` | `network.transport` | --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Part of the v11 migration away from attributes `@sentry/conventions` marks deprecated. Scoped to the `http.*` attributes on HTTP spans; the `net.*` attributes are migrated separately in #23301. Straight renames: `http.method` -> `http.request.method`, `http.status_code` -> `http.response.status_code`, `http.scheme` -> `url.scheme`, `http.user_agent` -> `user_agent.original`, `http.response_content_length` -> `http.response.body.size`, `http.response_transfer_size` -> `http.response.size`, and `url.same_origin` -> `http.request.same_origin`. `http.request_content_length`, `http.request_content_length_uncompressed`, `http.response_content_length_uncompressed` and `http.status_text` are left alone — they are not in `@sentry/conventions` at all, so they have no replacement to move to. Three cases needed more than a rename: - `http.target` carried pathname *and* query, while `url.path` is the pathname only. The core server span set neither `url.query` nor `url.fragment`, so dropping `http.target` would have lost the query — it now sets both, which the node server span already did. - Consumers that matched on `http.target` were repointed at `url.path`: the react-router low-quality-transaction filter and the TanStack Start tunnel-route filter, both `ignoreSpans` rules against our own spans that would otherwise have silently stopped matching. The Next.js readers keep `http.target` as a fallback behind a `url.path` primary, since they also see spans from a user's own OpenTelemetry instrumentation. All other read-side fallbacks are untouched for the same reason. - `http.host`, `http.flavor` and `http.client_ip` are dropped without a replacement being set here. Their replacements — `server.address`, `network.protocol.version` and `client.address` — are introduced by #23301, so setting them here too would mean two PRs writing the same keys with different values. `SanitizedRequestData`, the shape backing `http` breadcrumb data, now keys the method as `http.request.method`. Span attributes in the touched files are now imported from `@sentry/conventions/attributes` rather than written as string literals. That is what surfaced `url.same_origin` as deprecated; as a literal it was invisible. `no-unfiltered-url-attributes` no longer guards `http.target`: nothing sets it, and its replacement `url.path` is a bare pathname with no query to filter. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Part of the v11 migration away from attributes `@sentry/conventions` marks deprecated. This PR covers the renames on HTTP spans, all of them 1:1 with no behavior change. `http.target` and the Node body size behavior change follow in stacked PRs; the `net.*` attributes are migrated separately in #23301. `http.method` -> `http.request.method`, `http.status_code` -> `http.response.status_code`, `http.status_text` -> `http.response.status_text`, `http.scheme` -> `url.scheme`, `http.user_agent` -> `user_agent.original`, `http.request_content_length` -> `http.request.body.size`, `http.request_content_length_uncompressed` -> `http.request.body.decoded_size`, `http.response_content_length` -> `http.response.body.size`, `http.response_content_length_uncompressed` and `http.decoded_response_content_length` -> `http.response.body.decoded_size`, `http.response_transfer_size` -> `http.response.size`, and `url.same_origin` -> `http.request.same_origin`. The last two legacy response body size names meant the same thing — the decoded response body size. Node HTTP spans used `http.response_content_length_uncompressed`, browser resource spans used `http.decoded_response_content_length`. Which of the encoded and decoded attribute an HTTP span sets is unchanged here: the code still branches on whether a `content-encoding` header is present. That branching is what the stacked body size PR addresses. `http.host`, `http.flavor` and `http.client_ip` are dropped without a replacement being set here. Their replacements — `server.address`, `network.protocol.version` and `client.address` — are introduced by #23301, so setting them here too would mean two PRs writing the same keys with different values. `SanitizedRequestData`, the shape backing `http` breadcrumb data, now keys the method as `http.request.method`. Span attributes in the touched files are now imported from `@sentry/conventions/attributes` rather than written as string literals. That is what surfaced `url.same_origin` as deprecated; as a literal it was invisible. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Part of the v11 migration away from attributes `@sentry/conventions` marks deprecated. This PR covers the renames on HTTP spans, all of them 1:1 with no behavior change. `http.target` and the Node body size behavior change follow in stacked PRs; the `net.*` attributes are migrated separately in #23301. `http.method` -> `http.request.method`, `http.status_code` -> `http.response.status_code`, `http.status_text` -> `http.response.status_text`, `http.scheme` -> `url.scheme`, `http.user_agent` -> `user_agent.original`, `http.request_content_length` -> `http.request.body.size`, `http.request_content_length_uncompressed` -> `http.request.body.decoded_size`, `http.response_content_length` -> `http.response.body.size`, `http.response_content_length_uncompressed` and `http.decoded_response_content_length` -> `http.response.body.decoded_size`, `http.response_transfer_size` -> `http.response.size`, and `url.same_origin` -> `http.request.same_origin`. The last two legacy response body size names meant the same thing — the decoded response body size. Node HTTP spans used `http.response_content_length_uncompressed`, browser resource spans used `http.decoded_response_content_length`. Which of the encoded and decoded attribute an HTTP span sets is unchanged here: the code still branches on whether a `content-encoding` header is present. That branching is what the stacked body size PR addresses. `http.host`, `http.flavor` and `http.client_ip` are dropped without a replacement being set here. Their replacements — `server.address`, `network.protocol.version` and `client.address` — are introduced by #23301, so setting them here too would mean two PRs writing the same keys with different values. `SanitizedRequestData`, the shape backing `http` breadcrumb data, now keys the method as `http.request.method`. Span attributes in the touched files are now imported from `@sentry/conventions/attributes` rather than written as string literals. That is what surfaced `url.same_origin` as deprecated; as a literal it was invisible. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Part of the v11 migration away from attributes `@sentry/conventions` marks deprecated. This PR covers the renames on HTTP spans, all of them 1:1 with no behavior change. `http.target` and the Node body size behavior change follow in stacked PRs; the `net.*` attributes are migrated separately in #23301. `http.method` -> `http.request.method`, `http.status_code` -> `http.response.status_code`, `http.status_text` -> `http.response.status_text`, `http.scheme` -> `url.scheme`, `http.user_agent` -> `user_agent.original`, `http.request_content_length` -> `http.request.body.size`, `http.request_content_length_uncompressed` -> `http.request.body.decoded_size`, `http.response_content_length` -> `http.response.body.size`, `http.response_content_length_uncompressed` and `http.decoded_response_content_length` -> `http.response.body.decoded_size`, `http.response_transfer_size` -> `http.response.size`, and `url.same_origin` -> `http.request.same_origin`. The last two legacy response body size names meant the same thing — the decoded response body size. Node HTTP spans used `http.response_content_length_uncompressed`, browser resource spans used `http.decoded_response_content_length`. Which of the encoded and decoded attribute an HTTP span sets is unchanged here: the code still branches on whether a `content-encoding` header is present. That branching is what the stacked body size PR addresses. `http.host`, `http.flavor` and `http.client_ip` are dropped without a replacement being set here. Their replacements — `server.address`, `network.protocol.version` and `client.address` — are introduced by #23301, so setting them here too would mean two PRs writing the same keys with different values. `SanitizedRequestData`, the shape backing `http` breadcrumb data, now keys the method as `http.request.method`. Span attributes in the touched files are now imported from `@sentry/conventions/attributes` rather than written as string literals. That is what surfaced `url.same_origin` as deprecated; as a literal it was invisible. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Part of the v11 migration away from attributes `@sentry/conventions` marks deprecated. This PR covers the renames on HTTP spans, all of them 1:1 with no behavior change. `http.target` and the Node body size behavior change follow in stacked PRs; the `net.*` attributes are migrated separately in #23301. `http.method` -> `http.request.method`, `http.status_code` -> `http.response.status_code`, `http.status_text` -> `http.response.status_text`, `http.scheme` -> `url.scheme`, `http.user_agent` -> `user_agent.original`, `http.request_content_length` -> `http.request.body.size`, `http.request_content_length_uncompressed` -> `http.request.body.decoded_size`, `http.response_content_length` -> `http.response.body.size`, `http.response_content_length_uncompressed` and `http.decoded_response_content_length` -> `http.response.body.decoded_size`, `http.response_transfer_size` -> `http.response.size`, and `url.same_origin` -> `http.request.same_origin`. The last two legacy response body size names meant the same thing — the decoded response body size. Node HTTP spans used `http.response_content_length_uncompressed`, browser resource spans used `http.decoded_response_content_length`. Which of the encoded and decoded attribute an HTTP span sets is unchanged here: the code still branches on whether a `content-encoding` header is present. That branching is what the stacked body size PR addresses. `http.host`, `http.flavor` and `http.client_ip` are dropped without a replacement being set here. Their replacements — `server.address`, `network.protocol.version` and `client.address` — are introduced by #23301, so setting them here too would mean two PRs writing the same keys with different values. `SanitizedRequestData`, the shape backing `http` breadcrumb data, now keys the method as `http.request.method`. Span attributes in the touched files are now imported from `@sentry/conventions/attributes` rather than written as string literals. That is what surfaced `url.same_origin` as deprecated; as a literal it was invisible. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This PR covers the 1:1 renames and removals on HTTP spans. `http.target` and the Node body size behavior change follow in stacked PRs. | Old Attribute | New Attribute | |---|---| | `http.method` | `http.request.method` | | `http.status_code` | `http.response.status_code` | | `http.status_text` | `http.response.status_text` | | `http.scheme` | `url.scheme` | | `http.user_agent` | `user_agent.original` | | `http.request_content_length` | `http.request.body.size` | | `http.request_content_length_uncompressed` | `http.request.body.decoded_size` | | `http.response_content_length` | `http.response.body.size` | | `http.response_content_length_uncompressed` | `http.response.body.decoded_size`| | `http.decoded_response_content_length` | `http.response.body.decoded_size` | | `http.response_transfer_size` | `http.response.size` | | `url.same_origin` | `http.request.same_origin` | `http.host`, `http.flavor` and `http.client_ip` are dropped without a replacement being set here. Their replacements (`server.address`, `network.protocol.version` and `client.address`) are already being set (introduced in #23301). part of #18895 Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Three gaps that the alias symmetry test cannot catch, because it only seeds a group from attributes that already carry a non-empty `alias` array: - `net.peer.name` replaces onto `server.address` but was not part of that alias group. It now joins it, like `http.host`, which is ambiguous in the same way. - `net.sock.peer.port` replaces onto `network.peer.port` and neither named the other. The equivalent host pair already does. - `net.transport` changes its values from `ip_tcp` and `ip_udp` to `tcp` and `udp`, so it needs a transformation rather than a plain rename. Adds `net_transport_to_network_transport`. `net.host.port` and `net.peer.port` are left untouched: both correctly replace onto `server.port`, while `network.local.port` and `network.peer.port` descend from the `net.sock.*` attributes. Replaced by getsentry/sentry-javascript#23301 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Three gaps that the alias symmetry test cannot catch, because it only seeds a group from attributes that already carry a non-empty `alias` array: - `net.peer.name` replaces onto `server.address` but was not part of that alias group. It now joins it, like `http.host`, which is ambiguous in the same way. - `net.sock.peer.port` replaces onto `network.peer.port` and neither named the other. The equivalent host pair already does. - `net.transport` changes its values from `ip_tcp` and `ip_udp` to `tcp` and `udp`, so it needs a transformation rather than a plain rename. Adds `net_transport_to_network_transport`. `net.host.port` and `net.peer.port` are left untouched: both correctly replace onto `server.port`, while `network.local.port` and `network.peer.port` descend from the `net.sock.*` attributes. Replaced by getsentry/sentry-javascript#23301 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Three gaps that the alias symmetry test cannot catch, because it only seeds a group from attributes that already carry a non-empty `alias` array: - `net.peer.name` replaces onto `server.address` but was not part of that alias group. It now joins it, like `http.host`, which is ambiguous in the same way. - `net.sock.peer.port` replaces onto `network.peer.port` and neither named the other. The equivalent host pair already does. - `net.transport` changes its values from `ip_tcp` and `ip_udp` to `tcp` and `udp`, so it needs a transformation rather than a plain rename. Adds `net_transport_to_network_transport`. `net.host.port` and `net.peer.port` are left untouched: both correctly replace onto `server.port`, while `network.local.port` and `network.peer.port` descend from the `net.sock.*` attributes. Replaced by getsentry/sentry-javascript#23301 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…transport` `net.peer.name` replaces onto `server.address` and `net.sock.peer.port` replaces onto `network.peer.port`, but neither pair named the other side. Both alias groups are complete now. `net.transport` changes its values on the replacement, from `ip_tcp` and `ip_udp` to `tcp` and `udp`, so the old value cannot be copied over. It moves from `_status: "backfill"` to `_status: null` and keeps `network.transport` as the replacement. Replaced by getsentry/sentry-javascript#23301 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…transport` `net.peer.name` replaces onto `server.address` and `net.sock.peer.port` replaces onto `network.peer.port`, but neither pair named the other side. Both alias groups are complete now. `net.transport` changes its values on the replacement, from `ip_tcp` and `ip_udp` to `tcp` and `udp`, so the old value cannot be copied over. It moves from `_status: "backfill"` to `_status: null` and keeps `network.transport` as the replacement. Replaced by getsentry/sentry-javascript#23301 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…transport` (#588) `net.peer.name` replaces onto `server.address` and `net.sock.peer.port` replaces onto `network.peer.port`, but neither pair named the other side. Both alias groups are complete now. `net.transport` changes its values on the replacement, from `ip_tcp` and `ip_udp` to `tcp` and `udp`, so the old value cannot be copied over. It moves from `_status: "backfill"` to `_status: null` and keeps `network.transport` as the replacement. Replaced by getsentry/sentry-javascript#23301 Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Related to Linear: https://linear.app/getsentry/issue/SDK-1348/align-network-span-attributes
net.host.nameserver.addressnet.host.ipnetwork.local.addressnet.host.portnetwork.local.portnet.peer.nameserver.addressnet.peer.ipnetwork.peer.addressnet.peer.portnetwork.peer.portnet.transportnetwork.transport