Repository navigation
feat: add set_tags for updating multiple tags in one go - #1993
Conversation
When setting multiple tags, out-of-process handlers only need to flush the scope once.
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 36099d1. Configure here.
JoshuaMoelans
left a comment
There was a problem hiding this comment.
very nice, simple, yet elegant improvement 🚀 did you happen to benchmark how much this enhances performance 👀
Very rough numbers measured on Windows using Before (~2-4 ms)sentry_set_tag("foo", "111");
sentry_set_tag("bar", "222");
sentry_set_tag("baz", "333");
sentry_set_tag("qux", "444");After (~0.5-1 ms)sentry_value_t tags = sentry_value_new_object();
sentry_value_set_by_key(tags, "foo", sentry_value_new_string("111"));
sentry_value_set_by_key(tags, "bar", sentry_value_new_string("222"));
sentry_value_set_by_key(tags, "baz", sentry_value_new_string("333"));
sentry_value_set_by_key(tags, "qux", sentry_value_new_string("444"));
sentry_set_tags(tags);
|
|
Q:
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1993 +/- ##
==========================================
- Coverage 75.56% 74.23% -1.34%
==========================================
Files 91 104 +13
Lines 22129 25701 +3572
Branches 3948 4640 +692
==========================================
+ Hits 16722 19078 +2356
- Misses 4542 5314 +772
- Partials 865 1309 +444 🚀 New features to boost your workflow:
|
let's keep |
sentry-native 0.16.4 Created-by: HarmonybrewBot Commit-by: HarmonybrewBot Merged-by: HarmonybrewBot Description: Created by `brew bump` --- Created with `brew bump-formula-pr`. - [ ] `resource` blocks have been checked for updates. <details> <summary>release notes</summary> <pre>**Features**: - Windows: report WINE and Proton metadata in a separate runtime context. ([#1995](getsentry/sentry-native#1995)) - Add a public custom HTTP transport client interface (`sentry_http_transport_new`) so applications can plug in their own HTTP client (e.g. platform-native ones) while sentry-native continues to own request queueing, retry/backoff, offline caching, rate-limiting, and client reports. The built-in curl and WinHTTP transports are now implemented against this same interface. ([#1987](getsentry/sentry-native#1987)) - Native/Windows: capture WER report ID and expose as `contexts.wer.report_id` in crash events when the WER integration is enabled. ([#1970](getsentry/sentry-native#1970)) - Add `sentry_set_tags` and `sentry_scope_set_tags` for updating multiple tags with a single scope flush, improving bulk-update performance. ([#1993](getsentry/sentry-native#1993)) - Add `on_crashed_last_run` callback for inspecting crash envelopes from previous runs. ([#1985](getsentry/sentry-native#1985)) - Add `sentry_get_last_event_id` and `sentry_scope_get_last_event_id` for retrieving the last event ID captured with the global or given scope, respectively. ([#1992](getsentry/sentry-native#1992)) - Native/Unix: The native crash daemon now loads `libcurl` dynamically at runtime by default when `SENTRY_LINK_CURL=AUTO`, avoiding `libcurl` linker work during process startup and significantly speeding up startup time. Explicitly set `SENTRY_LINK_CURL=ON` to link it directly. ([#1955](getsentry/sentry-native#1955)) - Add missing public scope mutators: `set_release`, `set_environment`, `set_transaction`, `remove_tag`, `remove_extra`, `remove_context`, and `remove_attachment`. ([#2011](getsentry/sentry-native#2011)) **Deprecations**: - Deprecate `sentry_options_get/set_enable_logs` and `sentry_options_get/set_enable_metrics`. ([#2000](getsentry/sentry-native#2000)) **Fixes**: - Native: store daemon logs, minidumps, crash envelopes, and scratch files in `.run` directories so they are cleaned up with the run instead of accumulating in the database root. Minidumps can still be retained with `cache_keep`, which stores `.dmp` sidecars alongside cached envelopes. ([#1976](getsentry/sentry-native#1976)) - Linux/ARM32: prevent recursive crashes when libunwind receives an unmapped initial instruction pointer during crash handling. ([#1977](getsentry/sentry-native#1977)) - Improve log and metric delivery when telemetry is captured faster than envelopes can be serialized by offloading serialization to an internal thread pool. ([#1946](getsentry/sentry-native#1946)) - Wine: fix OS version detection and cross-compiling Windows builds from Linux. ([#2001](getsentry/sentry-native#2001)) - Destroy condition variables as approriate when no longer needed. ([#2004](getsentry/sentry-native#2004)) - Crashpad/Windows: preserve module CodeView UUIDs for minimal PDB70 records with empty PDB filenames. ([#2003](getsentry/sentry-native#2003)) - Native/Windows: improve crash-processing performance for applications with many threads. ([#2018](getsentry/sentry-native#2018)) - Prevent a race between SDK reinitialization and cleanup of the previous curl client when libcurl is linked directly. ([#2015](https://github.com/getsentry/sentry-native/pull/2015))</pre> <p>View the full release notes at <a href="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/getsentry/sentry-native/releases/tag/0.16.4">https://github.com/getsentry/sentry-native/releases/tag/0.16.4</a>.</p> </details> <hr> See merge request: Harmonybrew/homebrew-core!17725

Makes a significant difference in terms of performance when updating multiple tags, because out-of-process handlers only need to flush the scope once.