Add Continuous Profiling support (v8)
:scroll: Description
This is the first part for the continuous profiling support for Android. Internal doc is here
Part 1 Add the implementation of the continuous profiler itself
Part 2 -> https://github.com/getsentry/sentry-java/pull/3711 Create new envelope type and payload Create and send profile_chunk envelope
Part 3 -> https://github.com/getsentry/sentry-java/pull/3725 Instantiate profiler Set ProfileContext to transactions and spans Add performance collectors to the profiler
Part 4 -> https://github.com/getsentry/sentry-java/pull/3730 Handle app start profiling
Part 5 Add new user-facing APIs
Part 6 Update docs
:bulb: Motivation and Context
:green_heart: How did you test it?
Unit tests
:pencil: Checklist
- [ ] I reviewed the submitted code.
- [ ] I added tests to verify the changes.
- [ ] No new PII added or SDK only sends newly added PII if
sendDefaultPIIis enabled. - [ ] I updated the docs if needed.
- [ ] Review from the native team if needed.
- [ ] No breaking change or entry added to the changelog.
- [ ] No breaking change for hybrid SDKs or communicated to hybrid SDKs.
:crystal_ball: Next steps
| Fails | |
|---|---|
| :no_entry_sign: | Please consider adding a changelog entry for the next release. |
| Messages | |
|---|---|
| :book: | Do not forget to update Sentry-docs with your feature once the pull request gets approved. |
Instructions and example for changelog
Please add an entry to CHANGELOG.md to the "Unreleased" section. Make sure the entry includes this PR's number.
Example:
## Unreleased
- Add Continuous Profiling support (v8) ([#3710](https://github.com/getsentry/sentry-java/pull/3710))
If none of the above apply, you can opt out of this check by adding #skip-changelog to the PR description.
Generated by :no_entry_sign: dangerJS against 9954e1c41d7eaa6ddfbeb7bdafb39c2bbc14dcf4
Performance metrics :rocket:
| Plain | With Sentry | Diff | |
|---|---|---|---|
| Startup time | 428.10 ms | 459.66 ms | 31.56 ms |
| Size | 1.58 MiB | 2.22 MiB | 653.04 KiB |
Previous results on branch: feat/continuous-profiling-part1
Startup times
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 9cf8106fcb58cf6e4a6341a9dd4e66da15269996 | 421.06 ms | 445.54 ms | 24.48 ms |
| fca45e9c0a6bda15a8165788af52140e82561bbf | 420.88 ms | 501.82 ms | 80.94 ms |
App size
| Revision | Plain | With Sentry | Diff |
|---|---|---|---|
| 9cf8106fcb58cf6e4a6341a9dd4e66da15269996 | 1.58 MiB | 2.22 MiB | 653.04 KiB |
| fca45e9c0a6bda15a8165788af52140e82561bbf | 1.58 MiB | 2.22 MiB | 653.04 KiB |
🚨 Detected changes in high risk code 🚨
High-risk code has higher potential to break the SDK and may be hard to test. To prevent severe bugs, apply the rollout process for releasing such changes and be extra careful when changing and reviewing these files:
- [ ] sentry/src/main/java/io/sentry/transport/RateLimiter.java
🚨 Detected changes in high risk code 🚨
High-risk code has higher potential to break the SDK and may be hard to test. To prevent severe bugs, apply the rollout process for releasing such changes and be extra careful when changing and reviewing these files:
- [ ] sentry/src/main/java/io/sentry/transport/RateLimiter.java
🚨 Detected changes in high risk code 🚨
High-risk code has higher potential to break the SDK and may be hard to test. To prevent severe bugs, apply the rollout process for releasing such changes and be extra careful when changing and reviewing these files:
- [ ] sentry/src/main/java/io/sentry/transport/RateLimiter.java
🚨 Detected changes in high risk code 🚨
High-risk code has higher potential to break the SDK and may be hard to test. To prevent severe bugs, apply the rollout process for releasing such changes and be extra careful when changing and reviewing these files:
- [ ] sentry/src/main/java/io/sentry/transport/RateLimiter.java