Skip to content

Commit 3485246

Browse files
committed
Move span name migration entry to the v11 end state doc
1 parent f72a858 commit 3485246

2 files changed

Lines changed: 39 additions & 39 deletions

File tree

‎MIGRATION.md‎

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -613,45 +613,6 @@ These changes are not caught by TypeScript. If you filter, group, or alert on sp
613613
| `browser.TLS/SSL` | `browser.tls_ssl` |
614614
| `browser.DNS` | `browser.dns` |
615615

616-
### Span name changes
617-
618-
Affected SDKs: All SDKs.
619-
620-
With [span streaming](#span-streaming-is-now-the-default) enabled(the default), span names are now **low cardinality**, following the [Sentry span name conventions](https://getsentry.github.io/sentry-conventions/names/).
621-
622-
In v11, this affects `pageload`, `graphql` and `mcp.notification.*` spans. Further ops will follow in future releases.
623-
If you [opt out of span streaming](#opting-out-of-span-streaming), span names remain unchanged.
624-
625-
The following span names were adjusted:
626-
627-
| Span op | Before | After |
628-
| ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
629-
| `pageload` | The parameterized route, or the raw URL path if the SDK couldn't resolve one (`/users/123`) | The parameterized route, or `Pageload` if the SDK has none |
630-
| `graphql` | The graphql phase and, for operations, the operation name (`query GetUser`, `graphql.parse`, `graphql.resolve user.0.name`) | The operation type, or the processing type where there is none (`GraphQL query`, `GraphQL parse`, `GraphQL resolve`) |
631-
| `mcp.notification.client_to_server`, `mcp.notification.server_to_client` | The notification method name (`notifications/tools/list_changed`) | The notification method name, or `MCP notification` if the message carries none |
632-
633-
Some consequences to be aware of:
634-
635-
The graphql operation name and the resolver field path are supplied by the client, so they are no longer part of a span name. They remain available on the `graphql.operation.name` and `graphql.field.path` attributes.
636-
637-
Because a low-cardinality name cannot say which part of request processing a span covers, every graphql span now carries a `graphql.processing.type` attribute (`parse`, `validate`, `execute` or `resolve`). Use it to tell parse, validate and resolve spans apart. The attribute is set in both trace lifecycles.
638-
639-
For the same reason, `useOperationNameForRootSpan` no longer renames the enclosing root span (`GET /graphql` stays `GET /graphql`, instead of becoming `GET /graphql (query GetUser)`). The operations are still recorded on that span's `sentry.graphql.operation` attribute, as long as the option stays enabled (the default). Disabling it skips both, as before.
640-
641-
Child spans of a pageload span carry its name in their `sentry.segment.name` attribute, so that changes with it. If you group or filter spans by segment name in dashboards or alerts, update those references.
642-
643-
`ignoreSpans` is evaluated when a span **starts**, at which point a pageload span without a resolved route is already named `'Pageload'`, so filters matching a URL path no longer apply to it. Match on attributes instead:
644-
645-
```js
646-
Sentry.init({
647-
// Before
648-
ignoreSpans: ['/health'],
649-
650-
// After
651-
ignoreSpans: [{ name: 'Pageload', attributes: { 'sentry.op': 'pageload', 'url.path': '/health' } }],
652-
});
653-
```
654-
655616
### LangGraph no longer emits `create_agent` spans
656617

657618
Affected SDKs: All server-side SDKs.

‎docs/migration/v11-end-state.md‎

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,45 @@ These changes are not caught by TypeScript. If you filter, group, or alert on sp
741741
| `browser.TLS/SSL` | `browser.tls_ssl` |
742742
| `browser.DNS` | `browser.dns` |
743743

744+
### Span name changes
745+
746+
Affected SDKs: All SDKs.
747+
748+
With [span streaming](#span-streaming-is-now-the-default) enabled(the default), span names are now **low cardinality**, following the [Sentry span name conventions](https://getsentry.github.io/sentry-conventions/names/).
749+
750+
In v11, this affects `pageload`, `graphql` and `mcp.notification.*` spans. Further ops will follow in future releases.
751+
If you [opt out of span streaming](#opting-out-of-span-streaming), span names remain unchanged.
752+
753+
The following span names were adjusted:
754+
755+
| Span op | Before | After |
756+
| ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
757+
| `pageload` | The parameterized route, or the raw URL path if the SDK couldn't resolve one (`/users/123`) | The parameterized route, or `Pageload` if the SDK has none |
758+
| `graphql` | The graphql phase and, for operations, the operation name (`query GetUser`, `graphql.parse`, `graphql.resolve user.0.name`) | The operation type, or the processing type where there is none (`GraphQL query`, `GraphQL parse`, `GraphQL resolve`) |
759+
| `mcp.notification.client_to_server`, `mcp.notification.server_to_client` | The notification method name (`notifications/tools/list_changed`) | The notification method name, or `MCP notification` if the message carries none |
760+
761+
Some consequences to be aware of:
762+
763+
The graphql operation name and the resolver field path are supplied by the client, so they are no longer part of a span name. They remain available on the `graphql.operation.name` and `graphql.field.path` attributes.
764+
765+
Because a low-cardinality name cannot say which part of request processing a span covers, every graphql span now carries a `graphql.processing.type` attribute (`parse`, `validate`, `execute` or `resolve`). Use it to tell parse, validate and resolve spans apart. The attribute is set in both trace lifecycles.
766+
767+
For the same reason, `useOperationNameForRootSpan` no longer renames the enclosing root span (`GET /graphql` stays `GET /graphql`, instead of becoming `GET /graphql (query GetUser)`). The operations are still recorded on that span's `sentry.graphql.operation` attribute, as long as the option stays enabled (the default). Disabling it skips both, as before.
768+
769+
Child spans of a pageload span carry its name in their `sentry.segment.name` attribute, so that changes with it. If you group or filter spans by segment name in dashboards or alerts, update those references.
770+
771+
`ignoreSpans` is evaluated when a span **starts**, at which point a pageload span without a resolved route is already named `'Pageload'`, so filters matching a URL path no longer apply to it. Match on attributes instead:
772+
773+
```js
774+
Sentry.init({
775+
// Before
776+
ignoreSpans: ['/health'],
777+
778+
// After
779+
ignoreSpans: [{ name: 'Pageload', attributes: { 'sentry.op': 'pageload', 'url.path': '/health' } }],
780+
});
781+
```
782+
744783
### AI integrations no longer trace non-inference operations
745784
746785
Affected SDKs: All server-side SDKs.

0 commit comments

Comments
 (0)