-
Notifications
You must be signed in to change notification settings - Fork 0
feat: sampling api #10
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
Conversation
fb9d783 to
70944c7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice tests
| set { | ||
| queue.async(flags: .barrier) { [weak self] in self?._config = newValue } | ||
| } | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Config Property Weakness Causes Race Condition
The config property's getter and setter use unnecessary [weak self]. Since the CustomSampler instance is strongly retained, this can cause config to unexpectedly return nil. Additionally, the async setter and sync getter create a race condition, meaning config-dependent methods may return stale data immediately after setConfig() is called.
| mutableSpanData.settingAttributes( | ||
| item.attributes.merging(sampleResult.attributes ?? [:], uniquingKeysWith: { current, new in current }) | ||
| ) // Merge, prioritizing values from spanData for duplicate keys | ||
| spanById[item.spanId] = mutableSpanData |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Sampling Attributes Not Applied
The SpanData struct is typically immutable. The call to settingAttributes creates a new SpanData instance with merged attributes, but this new instance is not assigned back to mutableSpanData. This means the sampling attributes are not applied to the span, and depending on the OpenTelemetry SDK version, this might also cause a compilation error.
🤖 I have created a release *beep* *boop* --- ## [0.4.0](swift-launchdarkly-observability-v0.3.0...swift-launchdarkly-observability-v0.4.0) (2025-10-23) ### Features * Add GraphQL Client ([5e52365](5e52365)) * add gzip compression ([d2133a7](d2133a7)) * Add LightWeight GraphQL Client ([ed9f6b5](ed9f6b5)) * Add LightWeight GraphQL Client ([#12](#12)) ([ed9f6b5](ed9f6b5)) * add standard output logger for debug ([#16](#16)) ([435f4cb](435f4cb)) * add tap handler, send span ([#7](#7)) ([96cf5ef](96cf5ef)) * add timeout for custom crash filter as param (10s default) ([daaa111](daaa111)) * instrumentation and session managers ([b6f1c05](b6f1c05)) * instrumentation and session managers ([#1](#1)) ([a072154](a072154)) * instrumentation, client, sdk, crash report, network ([2255e48](2255e48)) * instrumentation, client, sdk, crash report, network ([#5](#5)) ([df712ab](df712ab)) * ios26 transition ([0853a19](0853a19)) * plugin implementation ([c38588c](c38588c)) * plugin implementation ([#4](#4)) ([1849209](1849209)) * sampling api ([#10](#10)) ([242149f](242149f)) * set sampling config via graphql client ([#19](#19)) ([500f550](500f550)) * swipe tracker ([4fca19d](4fca19d)) * swipe tracker ([#13](#13)) ([0a302d7](0a302d7)) * **system-metrics:** add auto instrumentation for cpu and memory ([#36](#36)) ([95ca6fc](95ca6fc)) * use apple format for crash report ([1390973](1390973)) ### Bug Fixes * compilation ([bdd3e22](bdd3e22)) * eval hook ([2749468](2749468)) * eval hook ([#8](#8)) ([4b60b80](4b60b80)) * get sampling config ([#21](#21)) ([12e35c7](12e35c7)) * guard inconsistent [weak self] ([59dce74](59dce74)) * Limit Package.swift to iOS and TV ([#34](#34)) ([7d76b65](7d76b65)) * requirement 1.2.3.6 span name in eval hook ([#14](#14)) ([ad15ef9](ad15ef9)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Prepare 0.4.0 release: add changelog and bump manifest version. > > - **Docs**: > - Add `CHANGELOG.md` for `0.4.0`, outlining new features and bug fixes. > - **Release**: > - Bump version in `.release-please-manifest.json` from `0.3.0` to `0.4.0`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 4381ca4. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
Added Sampling API
specs: https://launchdarkly.atlassian.net/wiki/spaces/PD/pages/3807248695/Sampling+of+Observability+SDK+Events