feat: Android O11Y cost based buffering + JSON exporters#525
Merged
abelonogov-ld merged 6 commits intomainfrom May 5, 2026
Merged
feat: Android O11Y cost based buffering + JSON exporters#525abelonogov-ld merged 6 commits intomainfrom
abelonogov-ld merged 6 commits intomainfrom
Conversation
Vadman97
approved these changes
May 4, 2026
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, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 095be57. Configure here.
Merged
abelonogov-ld
pushed a commit
that referenced
this pull request
May 5, 2026
🤖 I have created a release *beep* *boop* --- <details><summary>launchdarkly-observability-android: 0.44.0</summary> ## [0.44.0](launchdarkly-observability-android-0.43.0...launchdarkly-observability-android-0.44.0) (2026-05-05) ### Features * Android O11Y cost based buffering + JSON exporters ([#525](#525)) ([01e6b07](01e6b07)) </details> --- 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] > **Low Risk** > Low risk: this PR only updates release metadata (version numbers and changelog) and does not modify runtime code. Any risk is limited to publishing the new Android artifact version. > > **Overview** > Publishes `sdk/@launchdarkly/observability-android` **v0.44.0** by updating the version in `.release-please-manifest.json` and `gradle.properties`. > > Adds the `0.44.0` entry to `CHANGELOG.md`, noting the new Android observability cost-based buffering and JSON exporter feature. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit ae3288f. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
How did you test this change?
Are there any deployment considerations?
Note
Medium Risk
Replaces OpenTelemetry’s built-in OTLP exporters/processors with a new queued, cost-based batching pipeline and a custom OTLP/HTTP+JSON client, which could affect telemetry delivery, sampling, and flush semantics. Also changes the public
Observe.flush()signature to non-blockingUnit, requiring downstream callers to update.Overview
Switches Android observability export to a cost-based buffered queue shared across logs, traces, and metrics (via
EventQueue+BatchWorker), aligning behavior with the Swift implementation.Replaces OTLP Protobuf exporters with custom OTLP/HTTP+JSON exporters (
OtlpHttpClient+ per-signal JSON adapters/models) and rewiresObservabilityServiceto enqueue log/span/metric payloads (EventLogRecordProcessor,EventSpanProcessor,EventMetricExporter) while keeping debug/inspector exporters as optional delegates.Updates
Observe.flush()(andLDObserve) to be non-blocking and removes prior processor force-flush aggregation; adds Kotlin compiler/runtime pinning in Gradle and refactors gzip compression intoGzipUtil, with new unit tests covering the new queueing/export/JSON encoding behavior.Reviewed by Cursor Bugbot for commit 7f638be. Bugbot is set up for automated code reviews on this repo. Configure here.