Skip to content

Releases: getsentry/relay

23.1.0

17 Jan 17:54
Compare
Choose a tag to compare

Features:

  • Add support for limits.keepalive_timeout configuration. (#1645)
  • Add support for decaying functions in dynamic sampling rules. (#1692)
  • Stop extracting duration metric for session payloads. (#1739)

Internal:

  • Remove concurrent profiling. (#1697)
  • Use the main Sentry SDK to submit crash reports instead of a custom curl-based backend. This removes a dependency on libcurl and ensures compliance with latest TLS standards for crash uploads. Note that this only affects Relay if the hidden _crash_db option is used. (#1707)
  • Support transaction naming rules. (#1695)
  • Add PII scrubbing to URLs captured by replay recordings (#1730)
  • Add more measurement units for profiling. (#1732)
  • Add backoff mechanism for fetching projects from the project cache. (#1726)

22.12.0

15 Dec 20:42
Compare
Choose a tag to compare

Features:

  • The level of events created from Unreal Crash Reports now depends on whether it was an actual crash or an assert. (#1677)
  • Dynamic sampling is now based on the volume received by Relay by default and does not include the original volume dropped by client-side sampling in SDKs. This is required for the final dynamic sampling feature in the latest Sentry plans. (#1591)
  • Add OpenTelemetry Context. (#1617)
  • Add app.in_foreground and thread.main flag to protocol. (#1578)
  • Add support for View Hierarchy attachment_type. (#1642)
  • Add invalid replay recording outcome. (#1684)
  • Stop rejecting spans without a timestamp, instead giving them their respective event timestamp and setting their status to DeadlineExceeded. (#1690)
  • Add max replay size configuration parameter. (#1694)
  • Add abnormal_mechanism field to SessionUpdate protocol. (#1665)

Bug Fixes:

  • Make attachment_type on envelope items forward compatible by adding fallback variant. (#1638)
  • Relay no longer accepts transaction events older than 5 days. Previously the event was accepted and stored, but since metrics for such old transactions are not supported it did not show up in parts of Sentry such as the Performance landing page. (#1663)
  • Apply dynamic sampling to transactions from older SDKs and even in case Relay cannot load project information. This avoids accidentally storing 100% of transactions. (#1667)
  • Replay recording parser now uses the entire body rather than a subset. (#1682)
  • Fix a potential OOM in the Replay recording parser. (#1691)

Internal:

  • Emit a service.back_pressure metric that measures internal back pressure by service. (#1583)
  • Track metrics for OpenTelemetry events. (#1618)
  • Normalize transaction name for URLs transaction source, by replacing UUIDs, SHAs and numerical IDs in transaction names by placeholders. (#1621)
  • Parse string as number to handle a release bug. (#1637)
  • Expand Profiling's discard reasons. (#1661, #1685)
  • Allow to rate limit profiles on top of transactions. (#1681)

22.11.0

15 Nov 18:18
Compare
Choose a tag to compare

Features:

  • Add PII scrubber for replay recordings. (#1545)
  • Support decaying rules. Decaying rules are regular sampling rules, but they are only applicable in a specific time range. (#1544)
  • Disallow - in measurement and breakdown names. These items are converted to metrics, which do not allow - in their name. (#1571)

Bug Fixes:

  • Validate the distribution name in the event. (#1556)
  • Use correct meta object for logentry in light normalization. (#1577)

Internal:

  • Implement response context schema. (#1529)
  • Support dedicated quotas for storing transaction payloads ("indexed transactions") via the transaction_indexed data category if metrics extraction is enabled. (#1537, #1555)
  • Report outcomes for dynamic sampling with the correct indexed transaction data category to restore correct totals. (#1561)
  • Add fields to the Frame object for the sample format. (#1562)
  • Move kafka related code into separate relay-kafka crate. (#1563)

22.10.0

17 Oct 17:24
Compare
Choose a tag to compare

Features:

  • Limit the number of custom measurements per event. (#1483))
  • Add INP web vital as a measurement. (#1487)

** Bug Fixes**:

  • Make sure that non-processing Relays drop all invalid transactions. (#1513)

Internal:

  • Introduce a new profile format called sample. (#1462)
  • Generate a new profile ID when splitting a profile for multiple transactions. (#1473)
  • Pin Rust version to 1.63.0 in Dockerfile. (#1482)
  • Normalize measurement units in event payload. (#1488)
  • Remove long-running futures from metrics flush. (#1492)
  • Migrate to 2021 Rust edition. (#1510)
  • Make the profiling frame object compatible with the stacktrace frame object from event. (#1512)
  • Fix quota DataCategory::TransactionProcessed serialisation to match that of the CAPI. (#1514)
  • Support checking quotas in the Redis rate limiter without incrementing them. (#1519)
  • Update the internal service architecture for metrics aggregator service. (#1508)

22.9.0

15 Sep 17:34
Compare
Choose a tag to compare

Features:

  • Add user-agent parsing to Replays. (#1420)
  • Improve the release name used when reporting data to Sentry to include both the version and exact build. (#1428)

Bug Fixes:

  • Do not apply rate limits or reject data based on expired project configs. (#1404)
  • Process required stacktraces to fix filtering events originating from browser extensions. (#1423)
  • Fix error message filtering when formatting the message of logentry. (#1442)
  • Loosen type requirements for the user.id field in Replays. (#1443)

Internal:

  • Make the Redis connection pool configurable. (#1418)
  • Add support for sharding Kafka producers across clusters. (#1454)
  • Speed up project cache eviction through a background thread. (#1410)
  • Batch metrics buckets into logical partitions before sending them as Envelopes. (#1440)
  • Filter single samples in cocoa profiles and events with no duration in Android profiles. (#1445)
  • Add a "invalid_replay" discard reason for invalid replay events. (#1455)
  • Add rate limiters for replays and replay recordings. (#1456)
  • Use the different configuration for billing outcomes when specified. (#1461)
  • Support profiles tagged for many transactions. (#1444), (#1463), (#1464, #1465)
  • Track metrics for changes to the transaction name and DSC propagations. (#1466)
  • Simplify the ingestion path to reduce endpoint response times. (#1416, #1429, #1431)
  • Update the internal service architecture for the store, outcome, and processor services. (#1405, #1415, #1421, #1441, #1457, #1470)

22.8.0

15 Aug 17:38
Compare
Choose a tag to compare

Features:

  • Remove timeout-based expiry of envelopes in Relay's internal buffers. The cache.envelope_expiry is now inactive. To control the size of the envelope buffer, use cache.envelope_buffer_size exclusively, instead. (#1398)
  • Parse sample rates as JSON. (#1353)
  • Filter events in external Relays, before extracting metrics. (#1379)
  • Add privatekey and private_key as secret key name to datascrubbers. (#1376)
  • Explain why we responded with 429. (#1389)

Bug Fixes:

  • Fix a bug where unreal crash reports were dropped when metrics extraction is enabled. (#1355)
  • Extract user from metrics with EventUser's priority. (#1363)
  • Honor SentryConfig.enabled and don't init SDK at all if it is false. (#1380)
  • The priority thread metadata on profiles is now optional, do not fail the profile if it's not present. (#1392)

Internal:

  • Support compressed project configs in redis cache. (#1345)
  • Refactor profile processing into its own crate. (#1340)
  • Treat "unknown" transaction source as low cardinality for safe SDKs. (#1352, #1356)
  • Conditionally write a default transaction source to the transaction payload. (#1354)
  • Generate mobile measurements frames_frozen_rate, frames_slow_rate, stall_percentage. (#1373)
  • Change to the internals of the healthcheck endpoint. (#1374, #1377)
  • Re-encode the Typescript payload to normalize. (#1372)
  • Partially normalize events before extracting metrics. (#1366)
  • Spawn more threads for CPU intensive work. (#1378)
  • Add missing fields to DeviceContext (#1383)
  • Improve performance of Redis accesses by not running PING everytime a connection is reused. (#1394)
  • Distinguish between various discard reasons for profiles. (#1395)
  • Add missing fields to GPUContext (#1391)
  • Store actor now uses Tokio for message handling instead of Actix. (#1397)
  • Add app_memory to AppContext struct. (#1403)

22.7.0

15 Jul 18:43
Compare
Choose a tag to compare

Features:

  • Adjust sample rate by envelope header's sample_rate. (#1327)
  • Support transaction_info on event payloads. (#1330)

Bug Fixes:

  • Parse custom units with length < 15 without crashing. (#1312)
  • Split large metrics requests into smaller batches. This avoids failed metrics submission and lost Release Health data due to 413 Payload Too Large errors on the upstream. (#1326)
  • Metrics extraction: Map missing transaction status to "unknown". (#1333)
  • Fix CVE-2022-2068 and CVE-2022-2097 by updating to OpenSSL 1.1.1q. (#1334)

Internal:

  • Reduce number of metrics extracted for release health. (#1316)
  • Indicate with thread is the main thread in thread metadata for profiles. (#1320)
  • Increase profile maximum size by an order of magnitude. (#1321)
  • Add data category constant for processed transactions, encompassing all transactions that have been received and sent through dynamic sampling as well as metrics extraction. (#1306)
  • Extract metrics also from trace-sampled transactions. (#1317)
  • Extract metrics from a configurable amount of custom transaction measurements. (#1324)
  • Metrics: Drop transaction tag for high-cardinality sources. (#1339)

22.6.0

15 Jun 18:01
Compare
Choose a tag to compare

Compatibility: This version of Relay requires Sentry server 22.6.0 or newer.

Features:

  • Relay is now compatible with CentOS 7 and Red Hat Enterprise Linux 7 onward (kernel version 2.6.32), depending on glibc 2.17 or newer. The crash-handler feature, which is currently enabled in the build published to DockerHub, additionally requires curl 7.29 or newer. (#1279)
  • Optionally start relay with --upstream-dsn to pass a Sentry DSN instead of the URL. This can be convenient when starting Relay in environments close to an SDK, where a DSN is already available. (#1277)
  • Add a new runtime mode --aws-runtime-api=$AWS_LAMBDA_RUNTIME_API that integrates Relay with the AWS Extensions API lifecycle. (#1277)
  • Add ReplayRecording ItemType. (#1236)

Bug Fixes:

  • Session metrics extraction: Count distinct_ids from all session updates to prevent undercounting users. (#1275)

  • Session metrics extraction: Count crashed+abnormal towards errored_preaggr. (#1274)

Internal:

  • Add version 3 to the project configs endpoint. This allows returning pending results which need to be polled later and avoids blocking batched requests on single slow entries. (#1263)
  • Emit specific event type tags for "processing.event.produced" metric. (#1270)
  • Add support for profile outcomes. (#1272)
  • Avoid potential panics when scrubbing minidumps. (#1282)
  • Fix typescript profile validation. (#1283)
  • Track memory footprint of metrics buckets. (#1284, #1287, #1288)
  • Support dedicated topics per metrics usecase, drop metrics from unknown usecases. (#1285)
  • Add support for Rust profiles ingestion (#1296)

22.5.0

16 May 18:54
Compare
Choose a tag to compare

Features:

  • Add platform, op, http.method and status tag to all extracted transaction metrics. (#1227)
  • Add units in built-in measurements. (#1229)
  • Add protocol support for custom units on transaction measurements. (#1256)

Bug Fixes:

  • fix(metrics): Enforce metric name length limit. (#1238)
  • Accept and forward unknown Envelope items. In processing mode, drop items individually rather than rejecting the entire request. This allows SDKs to send new data in combined Envelopes in the future. (#1246)
  • Stop extracting metrics with outdated names from sessions. (#1251, #1252)
  • Update symbolic to pull in fixed Unreal parser that now correctly handles zero-length files. (#1266)

Internal:

  • Add sampling + tagging by event platform and transaction op. Some (unused) tagging rules from 22.4.0 have been renamed. (#1231)
  • Refactor aggregation error, recover from errors more gracefully. (#1240)
  • Remove/reject nul-bytes from metric strings. (#1235)
  • Remove the unused "internal" data category. (#1245)
  • Add the client and version as sdk tag to extracted session metrics in the format name/version. (#1248)
  • Expose shutdown_timeout in OverridableConfig (#1247)
  • Normalize all profiles and reject invalid ones. (#1250)
  • Raise a new InvalidCompression Outcome for invalid Unreal compression. (#1237)
  • Add a profile data category and count profiles in an envelope to apply rate limits. (#1259)
  • Support dynamic sampling by custom tags, operating system name and version, as well as device name and family. (#1268)

22.4.0

15 Apr 20:22
Compare
Choose a tag to compare

Features:

  • Map Windows version from raw_description to version name (XP, Vista, 11, ...). (#1219)

Bug Fixes:

  • Prevent potential OOM panics when handling corrupt Unreal Engine crashes. (#1216)

Internal:

  • Remove unused item types. (#1211)
  • Pin click dependency in requirements-dev.txt. (#1214)
  • Use fully qualified metric resource identifiers (MRI) for metrics ingestion. For example, the sessions duration is now called d:sessions/duration@s. (#1215)
  • Introduce metric units for rates and information, add support for custom user-declared units, and rename duration units to self-explanatory identifiers such as second. (#1217)
  • Increase the max profile size to accomodate a new platform. (#1223)
  • Set environment as optional when parsing a profile so we get a null value later on. (#1224)
  • Expose new tagging rules interface for metrics extracted from transactions. (#1225)
  • Return better BadStoreRequest for unreal events. (#1226)