Skip to content

Releases: getsentry/snuba

26.4.1

22 Apr 19:52

Choose a tag to compare

New Features ✨

  • Add default value to attribute aggregations by @wmak in #7888
  • Make BLQ stale threshold and static friction runtime-configurable by @kylemumma in #7880

Bug Fixes 🐛

  • (admin) Allow ClickHouse replace* functions in read-only query validation by @xurui-c in #7876
  • (COGS) Unique labels for resource_ids by @xurui-c in #7864
  • (outcomes) Deduplicate outcomes by item_id within batch by @untitaker in #7885

Internal Changes 🔧

Eap Outcomes

Other

  • (ci) Pull out migrations tests maybe lets see by @MeredithAnya in #7881
  • (gocd) Bump gocd-jsonnet to v3.0.0 (grouped pipedream) by @mchen-sentry in #7878
  • Bump new development version by @sentry-release-bot[bot] in 41fe9b16

26.4.0

15 Apr 18:59

Choose a tag to compare

New Features ✨

Consumer

  • Emit batch_write_bytes metric from RowBinary writer by @onewland in #7863
  • Add memory-based batching limit to Rust consumer by @onewland in #7854

Other

Bug Fixes 🐛

Rpc

  • Honor deprecated attribute keys in trace item attribute values by @xurui-c in #7853
  • Validate that TraceItemTable requests have at least one column by @volokluev in #7837

Other

  • (ci) Bump timeout and use --no-project on bump_version test by @kenzoengineer in #7841
  • (COGS) Label metrics correctly for query side by @xurui-c in #7826
  • (slo) Correctly report TOO_MANY_BYTES from allocation policy as rate-limited by @volokluev in #7846
  • (snuba commit log) Modify Rust consumer to produce next message offset to Snuba commit log by @shashjar in #7852

Internal Changes 🔧

Eap Outcomes

Other

Other

26.3.1

17 Mar 17:05
4c24181

Choose a tag to compare

ref(eap-outcomes): updating committing logic, more metrics (#7813)

## Summary

This PR improves the committing and backpressure handling in the
accepted outcomes consumer, and adds a `--commit-frequency-sec`
parameter to control how often commit requests are emitted.

### Changes

- **`CommitOutcomes`**: Added a configurable `commit_frequency` (default
10s) so that offsets are only committed on a timer rather than on every
poll. Offsets are now only tracked after a successful produce — if the
produce step rejects a message, offsets are **not** advanced. On `join`,
a forced commit is issued regardless of the timer.

- **`OutcomesAggregator`**: Fixed backpressure handling. Previously,
when the next step rejected a message during flush, the batch was
silently restored and the flush effectively became a no-op. Now, a
rejected message is carried over and retried on the next `poll`. While a
message is carried over, incoming `submit` calls return
`MessageRejected` so upstream applies backpressure. The `join` path also
retries carried-over messages until they succeed or the deadline
elapses.

- **`ProduceOutcome`**: Added a `timer!` metric
(`accepted_outcomes.batch_produce_ms`) to track how long each batch
produce takes.

- **`accepted_outcomes_consumer` CLI**: Added `--commit-frequency-sec`
(default `10`) that is plumbed through to `CommitOutcomes`.

### Future considerations

- Might have this just run `RunTask` instead of `RunTaskInThreads` given
that producing should be pretty quick and batching will be what takes
longer, might be better to prevent flushing a batch until the first once
is done producing. If we have multiple threads and something fails that
would be more data loss if we are committing early

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

26.3.0

16 Mar 16:34
8c4c8b5

Choose a tag to compare

fix(cogs): label metrics correctly (#7815)

26.2.1

21 Feb 00:45
5919b8c

Choose a tag to compare

ref(tests): refactor migration validator tests (#7754)

As a continuation of my journey to see where we are spending our time in
tests, it seems like a lot of time is spent in the migrations tests, or
really any test that requires `clickhouse_db` marker. Some other PRs aim
to run only whats neccesary, see
https://github.com/getsentry/snuba/pull/7749 and
https://github.com/getsentry/snuba/pull/7751.

Here `test_validate_all_migrations` is iterating over all the migrations
to validate the order, and the only reason it was using the
`clickhouse_db` marker is because it was querying clickhouse in order to
do some logic to get the local name for a dist table. We don't need to
do all that, we can do what we do in admin
https://github.com/getsentry/snuba/blob/5fd5b75ea00fd7c30f631aedf5b33598045d267a/snuba/admin/clickhouse/nodes.py#L31
by looking at the table schema for the storages associated with the
storage set key

26.2.0

18 Feb 05:46
72eae32

Choose a tag to compare

instrument gettrace endpoint more (#7741)

Approach:
- Goal: get a high-level signal on where the slowdown is (e.g., validate
whether post-processing is the issue), not detailed diagnostics (what is
the longest it took to process a row or how many attributes such a row
has)
- Plan to iterate across multiple PRs to progressively narrow down the
bottleneck.
- Avoid instrumenting every part of the endpoint to prevent trace
waterfall bloat.
- Hypothesis: _process_results is the likely bottleneck, so
instrumentation is focused there.
- Instrumentation is intentionally lightweight until we have stronger
evidence.
- Some instrumentation may be removed as we rule out potential
bottlenecks.

<img width="792" height="643" alt="Screenshot 2026-02-15 at 5 17 26 PM"
src="https://github.com/user-attachments/assets/8ea1a784-3867-4846-bec0-06cff5a04419"
/>

---------

Co-authored-by: Rachel Chen <rachelchen@MacBookPro.attlocal.net>
Co-authored-by: Rachel Chen <rachelchen@PL6VFX9HP4.local>

26.1.0

15 Jan 20:26

Choose a tag to compare

New Features ✨

  • (ast) Add ArbitrarySQL AST node to allow for subquery optimization by @volokluev in #7636
  • (capman) Add detailed observability to allocation policy span data by @volokluev in #7638
  • (consumers) Send logs for tracing events at or above INFO by @lcian in #7250
  • (eap) Gdpr export endpoint by @xurui-c in #7586
  • (health) Allow clickhouse check bypass by @onewland in #7600
  • (outcomes) Add 'ignored' reason to client discard reasons list by @Lms24 in #7635
  • Add metric that tracks "partitions left to optimize" by @kylemumma in #7620

Build / dependencies / internal 🔧

Deps

Other

Other

25.12.1

23 Dec 16:43

Choose a tag to compare

New Features ✨

  • feat(deletes): add EAP deletes allowlist for launch by @onewland in #7591

  • feat(eap): record bytes ingested by item type by @onewland in #7604

Bug Fixes 🐛

  • fix notHandled errors for search issues and transactions by @volokluev in #7599

Build / dependencies / internal 🔧

  • chore(eap): Try to understand the number of trace IDs we're fetching by @phacops in #7603

  • chore(snuba): take new_datadog out of metrics config by @volokluev in #7598

Other

25.12.0

15 Dec 19:01

Choose a tag to compare

New Features ✨

  • feat(deletes): support item attribute conditions in API and consumer by @onewland in #7570

Eap

Bug Fixes 🐛

Build / dependencies / internal 🔧

Deps

  • chore(deps): bump actions/create-github-app-token from 2.1.4 to 2.2.0 by @dependabot in #7550

  • chore(deps): bump actions/dependency-review-action from 4.8.1 to 4.8.2 by @dependabot in #7539

  • chore(deps): bump actions/checkout from 5 to 6 by @dependabot in #7549

  • chore(gocd): remove outcomes-billing consumer from python deploys by @onewland in #7564

  • ci: leaner snuba image by @aldy505 in #7542

Other

25.11.1

01 Dec 18:31

Choose a tag to compare

Build / dependencies / internal 🔧

New Features ✨

  • feat(eap): record item type counts in batches by @onewland in #7481
  • feat(processor): Handle casted columns in UUID column processor by @Zylphrex in #7552

Bug Fixes 🐛

  • fix: subscription executors should not crash when there are too many concurrent queries by @xurui-c in #7547
  • fix(gocd): fix gocd filters for rs/py deploys by @onewland in #7545

Other