You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Aug 14, 2024. It is now read-only.
Copy file name to clipboardExpand all lines: src/docs/sdk/research/performance/index.mdx
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -269,13 +269,7 @@ Sentry's ingestion model was not designed for nested transactions within a servi
269
269
270
270
In practice, SDKs have no way of preventing transactions from becoming nested. The end result is possibly surprising to users, as each transaction starts a new tree. The only way to relate those trees is through the `trace_id`.
271
271
272
-
Sentry's billing model is per event, be it an error event or a transaction event. That means that a transaction within a transaction generates two billable events.
273
-
274
-
In SDKs, having a transaction within a transaction will cause inner spans to be "swallowed" by the innermost transaction surrounding them. In these situations, the code creating the spans will only add them to one of the two transactions, causing instrumentation gaps in the other.
275
-
276
-
Sentry's UI is not designed to deal with nested transactions in a useful way. When looking at any one transaction it is as if all the other transactions in the trace did not exist (no other transaction is directly represented on the tree view). There is a trace view feature to visualize all transactions that share a `trace_id`, but the trace view only gives an overview of the trace by showing transactions and no child spans. There is no way to navigate to the trace view without first visiting some transaction.
277
-
278
-
There is also user confusion about what one would expect in the UI for a situation such as this one (pseudocode):
272
+
For example, there is confusion about what one would expect in the UI for a situation such as this one (pseudocode):
279
273
280
274
```python
281
275
# if do_a_database_query returns 10 results, is the user
@@ -290,6 +284,12 @@ with transaction("index-page"):
290
284
create_thumbnail(result)
291
285
```
292
286
287
+
Sentry's billing model is per event, be it an error event or a transaction event. That means that a transaction within a transaction generates two billable events.
288
+
289
+
In SDKs, having a transaction within a transaction will cause inner spans to be "swallowed" by the innermost transaction surrounding them. In these situations, the code creating the spans will only add them to one of the two transactions, causing instrumentation gaps in the other.
290
+
291
+
To visualize all transactions that share a `trace_id`, a user can visit the Trace View page in **Sentry > Performance**. This page gives an overview of the trace by displaying transactions using hierarchical UI and allows users to load child spans. To learn more about the Trace View, check out our [docs](https://docs.sentry.io/concepts/key-terms/tracing/trace-view/).
292
+
293
293
### Spans Cannot Exist Outside of a Transaction
294
294
295
295
Sentry's tracing experience is centered entirely around the part of a trace that exists inside transactions. This means that data cannot exist outside of a transaction even if it exists in a trace.
0 commit comments