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

rfc(decision): mobile-transactions-and-spans #118

Merged
merged 6 commits into from
Nov 3, 2023

Conversation

markushi
Copy link
Member

@markushi markushi commented Oct 23, 2023

This RFC proposes how transaction and spans are used on mobile platforms.

Rendered RFC

@markushi markushi marked this pull request as draft October 24, 2023 07:10
Copy link
Member

@HazAT HazAT left a comment

Choose a reason for hiding this comment

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

👍 left two comments, but this gon be gud

text/0117-mobile-transactions-and-spans.md Outdated Show resolved Hide resolved
In Sentry, we need pick apart these special transactions (that we shouldn’t consider as such anymore, maybe use `transaction->transaction_info->source` to identify carrier transaction) and only use their content, which are the spans we measured.

TBD:
* How can we ensure that spans are packaged up efficiently, ultimately creating not to little and not too many web requests.
Copy link
Member

Choose a reason for hiding this comment

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

I think not a high prio thing to figure out, since eventually it will be Span Ingest.

Copy link
Member

@philipphofmann philipphofmann left a comment

Choose a reason for hiding this comment

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

I vote for option 1. LGTM.

README.md Outdated Show resolved Hide resolved
text/0117-mobile-transactions-and-spans.md Outdated Show resolved Hide resolved
- Any manually added / background work spans (e.g. a long running sync) could extend the transaction lifetime, which could result in overlapping transactions
- We need new (manual) APIs to track the current screen

### 3. Leave it as-is
Copy link
Member

Choose a reason for hiding this comment

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

IMO, this is not an option cause we miss adding auto-instrumented spans to transactions.


- The transaction duration still makes no sense, as it’s length is determined by the time the screen was visible. Also probably needs a max timeout again too
- Any manually added / background work spans (e.g. a long running sync) could extend the transaction lifetime, which could result in overlapping transactions
- We need new (manual) APIs to track the current screen
Copy link
Member

Choose a reason for hiding this comment

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

This won't work with multiple screens. Furthermore, this most likely won't work properly for declarative UI frameworks such as Compose or SwiftUI, where identifying the current screen is a challenge.

Copy link
Member

@kahest kahest left a comment

Choose a reason for hiding this comment

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

LGTM 🚀
+1 for option 1)

TBD:
* How can we ensure that spans are packaged up efficiently, ultimately creating not to little and not too many web requests.
* As of now, some performance grouping is done based on transactions op and description. With this change they will simply act as carieers, so we need to ensure the span context has enough information that aggregation (e.g. by screen) can still be performed.
* Profiles are right now captured based on transaction start signals, we need to find a reliable way to keep the remaining functionality.
Copy link
Member

@kahest kahest Oct 24, 2023

Choose a reason for hiding this comment

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

this is a useful callout about Profiling - note that this discussion already happens internally and is not part of the RFC

Copy link
Member

@AbhiPrasad AbhiPrasad left a comment

Choose a reason for hiding this comment

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

fwiw all of these directly apply to pageload transactions for browser js as well, but we can tackle that separately :shipit:

text/0117-mobile-transactions-and-spans.md Outdated Show resolved Hide resolved
markushi and others added 3 commits October 30, 2023 07:36
Co-authored-by: Philipp Hofmann <ph.hofmann@pm.me>
Co-authored-by: Daniel Griesser <daniel.griesser.86@gmail.com>
Co-authored-by: Abhijeet Prasad <aprasad@sentry.io>
@markushi markushi marked this pull request as ready for review November 3, 2023 09:12
@markushi markushi merged commit 57098a6 into main Nov 3, 2023
2 checks passed
@markushi markushi deleted the rfc/mobile-transactions-and-spans branch November 3, 2023 09:25
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.

None yet

6 participants