Skip to content

Latest commit

 

History

History
1139 lines (698 loc) · 53.8 KB

CHANGELOG.md

File metadata and controls

1139 lines (698 loc) · 53.8 KB

Changelog

Unreleased

Internal:

  • Remove unused item types. (#1211)
  • Account root span in span op breakdown. (#1213)

22.3.0

Features:

  • Tag transaction metrics by user satisfaction. (#1197)

Bug Fixes:

  • CVE-2022-24713: Prevent denial of service through untrusted regular expressions used for PII scrubbing. (#1207)
  • Prevent dropping metrics during Relay shutdown if the project is outdated or not cached at time of the shutdown. (#1205)
  • Prevent a potential OOM when validating corrupted or exceptional minidumps. (#1209)

Internal:

  • Spread out metric aggregation over the aggregation window to avoid concentrated waves of metrics requests to the upstream every 10 seconds. Relay now applies jitter to initial_delay to spread out requests more evenly over time. (#1185)
  • Use a randomized Kafka partitioning key for sessions instead of the session ID. (#1194)
  • Add new statsd metrics for bucketing efficiency. (#1199, #1192, #1200)
  • Add a Profile ItemType to represent the profiling data sent from Sentry SDKs. (#1179)

22.2.0

Features:

  • Add the relay.override_project_ids configuration flag to support migrating projects from self-hosted to Sentry SaaS. (#1175)

Internal:

  • Add an option to dispatch billing outcomes to a dedicated topic. (#1168)
  • Add new ItemType to handle profiling data from Specto SDKs. (#1170)

Bug Fixes:

  • Fix regression in CSP report parsing. (#1174)
  • Ignore replacement_chunks when they aren't used. (#1180)

22.1.0

Features:

  • Flush metrics and outcome aggregators on graceful shutdown. (#1159)
  • Extract metrics from sampled transactions. (#1161)

Internal:

  • Extract normalized dist as metric. (#1158)
  • Extract transaction user as metric. (#1164)

21.12.0

Features:

  • Extract measurement ratings, port from frontend. (#1130)
  • External Relays perform dynamic sampling and emit outcomes as client reports. This feature is now enabled by default. (#1119)
  • Metrics extraction config, custom tags. (#1141)
  • Update the user agent parser (uap-core Feb 2020 to Nov 2021). This allows Relay and Sentry to infer more recent browsers, operating systems, and devices in events containing a user agent header. (#1143, #1145)
  • Improvements to Unity OS context parsing (#1150)

Bug Fixes:

  • Support Unreal Engine 5 crash reports. (#1132)
  • Perform same validation for aggregate sessions as for individual sessions. (#1140)
  • Add missing .NET 4.8 release value. (#1142)
  • Properly document which timestamps are accepted. (#1152)

Internal:

  • Add more statsd metrics for relay metric bucketing. (#1124, #1128)
  • Add an internal option to capture minidumps for hard crashes. This has to be enabled via the sentry._crash_db config parameter. (#1127)
  • Fold processing vs non-processing into single actor. (#1133)
  • Aggregate outcomes for dynamic sampling, invalid project ID, and rate limits. (#1134)
  • Extract session metrics from aggregate sessions. (#1140)
  • Prefix names of extracted metrics by sentry.sessions. or sentry.transactions.. (#1147)
  • Extract transaction duration as metric. (#1148)

21.11.0

Features:

  • Add bucket width to bucket protocol. (#1103)
  • Support multiple kafka cluster configurations. (#1101)
  • Tag metrics by transaction name. (#1126)

Bug Fixes:

  • Avoid unbounded decompression of encoded requests. A particular request crafted to inflate to large amounts of memory, such as a zip bomb, could put Relay out of memory. (#1117, #1122, #1123)
  • Avoid unbounded decompression of UE4 crash reports. Some crash reports could inflate to large amounts of memory before being checked for size, which could put Relay out of memory. (#1121)

Internal:

  • Aggregate client reports before sending them onwards. (#1118)

21.10.0

Bug Fixes:

  • Correctly validate timestamps for outcomes and sessions. (#1086)
  • Run compression on a thread pool when sending to upstream. (#1085)
  • Report proper status codes and error messages when sending invalid JSON payloads to an endpoint with a X-Sentry-Relay-Signature header. (#1090)
  • Enforce attachment and event size limits on UE4 crash reports. (#1099)

Internal:

  • Add the exclusive time of the transaction's root span. (#1083)
  • Add session.status tag to extracted session.duration metric. (#1087)
  • Serve project configs for batched requests where one of the project keys cannot be parsed. (#1093)

21.9.0

Features:

  • Add sampling based on transaction name. (#1058)
  • Support running Relay without config directory. The most important configuration, including Relay mode and credentials, can now be provided through commandline arguments or environment variables alone. (#1055
  • Protocol support for client reports. (#1081)
  • Extract session metrics in non processing relays. (#1073)

Bug Fixes:

  • Use correct commandline argument name for setting Relay port. (#1059)
  • Retrieve OS Context for Unity Events. (#1072)

Internal:

  • Add new metrics on Relay's performance in dealing with buckets of metric aggregates, as well as the amount of aggregated buckets. (#1070)
  • Add the exclusive time of a span. (#1061)
  • Remove redundant dynamic sampling processing on fast path. (#1084)

21.8.0

  • No documented changes.

21.7.0

  • No documented changes.

21.6.3

  • No documented changes.

21.6.2

Bug Fixes:

  • Remove connection metrics reported under connector.*. They have been fully disabled since version 21.3.0. (#1021)
  • Remove error logs for "failed to extract event" and "failed to store session". (#1032)

Internal:

  • Assign a random Kafka partition key for session aggregates and metrics to distribute messages evenly. (#1022)
  • All fields in breakdown config should be camelCase, and rename the breakdown key name in project options. (#1020)

21.6.1

  • No documented changes.

21.6.0

Features:

  • Support self-contained envelopes without authentication headers or query parameters. (#1000)
  • Support statically configured relays. (#991)
  • Support namespaced event payloads in multipart minidump submission for Electron Framework. The field has to follow the format sentry___<namespace>. (#1012)

Bug Fixes:

  • Explicitly declare reprocessing context. (#1009)
  • Validate the environment attribute in sessions, and drop sessions with invalid releases. (#1018)

Internal:

  • Gather metrics for corrupted Events with unprintable fields. (#1008)
  • Remove project actors. (#1025)

21.5.1

Bug Fixes:

  • Do not leak resources when projects or DSNs are idle. (#1003)

21.5.0

Features:

  • Support the frame.stack_start field for chained async stack traces in Cocoa SDK v7. (#981)
  • Rename configuration fields cache.event_buffer_size to cache.envelope_buffer_size and cache.event_expiry to cache.envelope_expiry. The former names are still supported by Relay. (#985)
  • Add a configuraton flag relay.ready: always to mark Relay ready in healthchecks immediately after starting without requiring to authenticate. (#989)

Bug Fixes:

  • Fix roundtrip error when PII selector starts with number. (#982)
  • Avoid overflow panic for large retry-after durations. (#992)

Internal:

  • Update internal representation of distribution metrics. (#979)
  • Extract metrics for transaction breakdowns and sessions when the feature is enabled for the organizaiton. (#986)
  • Assign explicit values to DataCategory enum. (#987)

21.4.1

Bug Fixes:

  • Allow the event_id attribute on breadcrumbs to link between Sentry events. (#977)

21.4.0

Bug Fixes:

  • Parse the Crashpad information extension stream from Minidumps with annotation objects correctly. (#973)

Internal:

  • Emit outcomes for rate limited attachments. (#951)
  • Remove timestamp from metrics text protocol. (#972)
  • Add max, min, sum, and count to gauge metrics. (#974)

21.3.1

Bug Fixes:

  • Make request url scrubbable. (#955)
  • Remove dependent items from envelope when dropping transaction item. (#960)

Internal:

  • Emit the quantity field for outcomes of events. This field describes the total size in bytes for attachments or the event count for all other categories. A separate outcome is emitted for attachments in a rejected envelope, if any, in addition to the event outcome. (#942)
  • Add experimental metrics ingestion without bucketing or pre-aggregation. (#948)
  • Skip serializing some null values in frames interface. (#944)
  • Add experimental metrics ingestion with bucketing and pre-aggregation. (#948, #952, #958, #966, #969)
  • Change HTTP response for upstream timeouts from 502 to 504. (#859)
  • Add rule id to outcomes coming from transaction sampling. (#953)
  • Add support for breakdowns ingestion. (#934)
  • Ensure empty strings are invalid measurement names. (#968)

21.3.0

Features:

  • Relay now picks up HTTP proxies from environment variables. This is made possible by switching to a different HTTP client library.

Bug Fixes:

  • Deny backslashes in release names. (#904)
  • Fix a problem with Data Scrubbing source names (PII selectors) that caused $frame.abs_path to match, but not $frame.abs_path || ** or $frame.abs_path && **. (#932)
  • Make username pii-strippable. (#935)
  • Respond with 400 Bad Request and an error message "empty envelope" instead of 429 when envelopes without items are sent to the envelope endpoint. (#937)
  • Allow generic Slackbot (#947)

Internal:

  • Emit the category field for outcomes of events. This field disambiguates error events, security events and transactions. As a side-effect, Relay no longer emits outcomes for broken JSON payloads or network errors. (#931)
  • Add inbound filters functionality to dynamic sampling rules. (#920)
  • The undocumented http._client option has been removed. (#938)
  • Log old events and sessions in the requests.timestamp_delay metric. (#933)
  • Add rule id to outcomes coming from event sampling. (#943)
  • Fix a bug in rate limiting that leads to accepting all events in the last second of a rate limiting window, regardless of whether the rate limit applies. (#946)

21.2.0

Features:

  • By adding .no-cache to the DSN key, Relay refreshes project configuration caches immediately. This allows to apply changed settings instantly, such as updates to data scrubbing or inbound filter rules. (#911)
  • Add NSError to mechanism. (#925)
  • Add snapshot to the stack trace interface. (#927)

Bug Fixes:

  • Log on INFO level when recovering from network outages. (#918)
  • Fix a panic in processing minidumps with invalid location descriptors. (#919)

Internal:

  • Improve dynamic sampling rule configuration. (#907)
  • Compatibility mode for pre-aggregated sessions was removed. The feature is now enabled by default in full fidelity. (#913)

21.1.0

Features:

  • Support dynamic sampling for error events. (#883)

Bug Fixes:

  • Make all fields but event-id optional to fix regressions in user feedback ingestion. (#886)
  • Remove kafka-ssl feature because it breaks development workflow on macOS. (#889)
  • Accept envelopes where their last item is empty and trailing newlines are omitted. This also fixes a panic in some cases. (#894)

Internal:

  • Extract crashpad annotations into contexts. (#892)
  • Normalize user reports during ingestion and create empty fields. (#903)
  • Ingest and normalize sample rates from envelope item headers. (#910)

20.12.1

  • No documented changes.

20.12.0

Features:

  • Add kafka-ssl compilation feature that builds Kafka linked against OpenSSL. This feature is enabled in Docker containers only. This is only relevant for Relays running as part of on-premise Sentry. (#881)
  • Relay is now able to ingest pre-aggregated sessions, which will make it possible to efficiently handle applications that produce thousands of sessions per second. (#815)
  • Add protocol support for WASM. (#852)
  • Add dynamic sampling for transactions. (#835)
  • Send network outage metric on healthcheck endpoint hit. (#856)

Bug Fixes:

  • Fix a long-standing bug where log messages were not addressible as $string. (#882)
  • Allow params in content-type for security requests to support content types like "application/expect-ct-report+json; charset=utf-8". (#844)
  • Fix a panic in CSP filters. (#848)
  • Do not drop sessions due to an invalid age constraint set to 0. (#855)
  • Do not emit outcomes after forwarding envelopes to the upstream, even if that envelope is rate limited, rejected, or dropped. Since the upstream logs an outcome, it would be a duplicate. (#857)
  • Fix status code for security report. (#864)
  • Add missing fields for Expect-CT reports. (#865)
  • Support more directives in CSP reports, such as block-all-mixed-content and require-trusted-types-for. (#876)

Internal:

  • Add experimental support for picking up HTTP proxies from the regular environment variables. This feature needs to be enabled by setting http: client: "reqwest" in your config.yml. (#839)
  • Refactor transparent request forwarding for unknown endpoints. Requests are now entirely buffered in memory and occupy the same queues and actors as other requests. This should not cause issues but may change behavior under load. (#839)
  • Add reason codes to the X-Sentry-Rate-Limits header in store responses. This allows external Relays to emit outcomes with the proper reason codes. (#850)
  • Emit metrics for outcomes in external relays. (#851)
  • Make $error.value pii=true. (#837)
  • Send key_id in partial project config. (#854)
  • Add stack traces to Sentry error reports. (#872)

20.11.1

  • No documented changes.

20.11.0

Features:

  • Rename upstream retries histogram metric and add upstream requests duration metric. (#816)
  • Add options for metrics buffering (metrics.buffering) and sampling (metrics.sample_rate). (#821)

Bug Fixes:

  • Accept sessions with IP address set to {{auto}}. This was previously rejected and silently dropped. (#827)
  • Fix an issue where every retry-after response would be too large by one minute. (#829)

Internal:

  • Always apply cache debouncing for project states. This reduces pressure on the Redis and file system cache. (#819)
  • Internal refactoring such that validating of characters in tags no longer uses regexes internally. (#814)
  • Discard invalid user feedback sent as part of envelope. (#823)
  • Emit event errors and normalization errors for unknown breadcrumb keys. (#824)
  • Normalize breadcrumb.ty into breadcrumb.type for broken Python SDK versions. (#824)
  • Add the client SDK interface for unreal crashes and set the name to unreal.crashreporter. (#828)
  • Fine-tune the selectors for minidump PII scrubbing. (#818, #830)

20.10.1

Internal:

  • Emit more useful normalization meta data for invalid tags. (#808)

20.10.0

Features:

  • Add support for measurement ingestion. (#724, #785)
  • Add support for scrubbing UTF-16 data in attachments (#742, #784, #787)
  • Add upstream request metric. (#793)
  • The padding character in attachment scrubbing has been changed to match the masking character, there is no usability benefit from them being different. (#810)

Bug Fixes:

  • Fix issue where $span would not be recognized in Advanced Data Scrubbing. (#781)
  • Accept big-endian minidumps. (#789)
  • Detect network outages and retry sending events instead of dropping them. (#788)

Internal:

  • Project states are now cached separately per DSN public key instead of per project ID. This means that there will be multiple separate cache entries for projects with more than one DSN. (#778)
  • Relay no longer uses the Sentry endpoint to resolve project IDs by public key. Ingestion for the legacy store endpoint has been refactored to rely on key-based caches only. As a result, the legacy endpoint is supported only on managed Relays. (#800)
  • Fix rate limit outcomes, now emitted only for error events but not transactions. (#806, #809)

20.9.0

Features:

  • Add support for attaching Sentry event payloads in Unreal crash reports by adding __sentry game data entries. (#715)
  • Support chunked form data keys for event payloads on the Minidump endpoint. Since crashpad has a limit for the length of custom attributes, the sentry event payload can be split up into sentry__1, sentry__2, etc. (#721)
  • Periodically re-authenticate with the upstream server. Previously, there was only one initial authentication. (#731)
  • The module attribute on stack frames ($frame.module) and the (usually server side generated) attribute culprit can now be scrubbed with advanced data scrubbing. (#744)
  • Compress outgoing store requests for events and envelopes including attachements using gzip content encoding. (#745)
  • Relay now buffers all requests until it has authenticated with the upstream. (#747)
  • Add a configuration option to change content encoding of upstream store requests. The default is gzip, and other options are identity, deflate, or br. (#771)

Bug Fixes:

  • Send requests to the /envelope/ endpoint instead of the older /store/ endpoint. This particularly fixes spurious 413 Payload Too Large errors returned when using Relay with Sentry SaaS. (#746)

Internal:

  • Remove a temporary flag from attachment kafka messages indicating rate limited crash reports to Sentry. This is now enabled by default. (#718)
  • Performance improvement of http requests to upstream, high priority messages are sent first. (#678)
  • Experimental data scrubbing on minidumps(#682)
  • Move generate-schema from the Relay CLI into a standalone tool. (#739)
  • Move process-event from the Relay CLI into a standalone tool. (#740)
  • Add the client SDK to session kafka payloads. (#751)
  • Add a standalone tool to document metrics in JSON or YAML. (#752)
  • Emit processing.event.produced for user report and session Kafka messages. (#757)
  • Improve performance of event processing by avoiding regex clone. (#767)
  • Assign a default name for unnamed attachments, which prevented attachments from being stored in Sentry. (#769)
  • Add Relay version version to challenge response. (#758)

20.8.0

Features:

  • Add the http.connection_timeout configuration option to adjust the connection and SSL handshake timeout. The default connect timeout is now increased from 1s to 3s. (#688)
  • Supply Relay's version during authentication and check if this Relay is still supported. An error message prompting to upgrade Relay will be supplied if Relay is unsupported. (#697)

Bug Fixes:

  • Reuse connections for upstream event submission requests when the server supports connection keepalive. Relay did not consume the response body of all requests, which caused it to reopen a new connection for every event. (#680, #695)
  • Fix hashing of user IP addresses in data scrubbing. Previously, this could create invalid IP addresses which were later rejected by Sentry. Now, the hashed IP address is moved to the id field. (#692)
  • Do not retry authentication with the upstream when a client error is reported (status code 4XX). (#696)

Internal:

  • Extract the event timestamp from Minidump files during event normalization. (#662)
  • Retain the full span description in transaction events instead of trimming it. (#674)
  • Report all Kafka producer errors to Sentry. Previously, only immediate errors were reported but not those during asynchronous flushing of messages. (#677)
  • Add "HubSpot Crawler" to the list of web crawlers for inbound filters. (#693)
  • Improved typing for span data of transaction events, no breaking changes. (#713)
  • Breaking change: In PII configs, all options on hash and mask redactions (replacement characters, ignored characters, hash algorithm/key) are removed. If they still exist in the configuration, they are ignored. (#760)

20.7.2

Features:

  • Report metrics for connections to the upstream. These metrics are reported under connector.* and include information on connection reuse, timeouts and errors. (#669)
  • Increased the maximum size of attachments from 50MiB to 100MiB. Most notably, this allows to upload larger minidumps. (#671)

Internal:

  • Always create a spans array for transactions in normalization. This allows Sentry to render the spans UI even if the transaction is empty. (#667)

20.7.1

  • No documented changes.

20.7.0

Features:

  • Sessions and attachments can be rate limited now. These rate limits apply separately from error events, which means that you can continue to send Release Health sessions while you're out of quota with errors. (#636)

Bug Fixes:

  • Outcomes from downstream relays were not forwarded upstream. (#632)
  • Apply clock drift correction to Release Health sessions and validate timestamps. (#633)
  • Apply clock drift correction for timestamps that are too far in the past or future. This fixes a bug where broken transaction timestamps would lead to negative durations. (#634, #654)
  • Respond with status code 200 OK to rate limited minidump and UE4 requests. Third party clients otherwise retry those requests, leading to even more load. (#646, #647)
  • Ingested unreal crash reports no longer have a misc_primary_cpu_brand key with GPU information set in the Unreal context. (#650)
  • Fix ingestion of forwarded outcomes in processing Relays. Previously, emit_outcomes had to be set explicitly to enable this. (#653)

Internal:

  • Restructure the envelope and event ingestion paths into a pipeline and apply rate limits to all envelopes. (#635, #636)
  • Pass the combined size of all attachments in an envelope to the Redis rate limiter as quantity to enforce attachment quotas. (#639)
  • Emit flags for rate limited processing attachments and add a size field. (#640, #644)

20.6.0

We have switched to CalVer! Relay's version is always in line with the latest version of Sentry.

Features:

  • Proxy and managed Relays now apply clock drift correction based on the sent_at header emitted by SDKs. (#581)
  • Apply cached rate limits to attachments and sessions in the fast-path when parsing incoming requests. (#618)
  • New config options metrics.default_tags and metrics.hostname_tag. (#625)

Bug Fixes:

  • Clock drift correction no longer considers the transaction timestamp as baseline for SDKs using Envelopes. Instead, only the dedicated sent_at Envelope header is used. (#580)
  • The http.timeout setting is now applied to all requests, including event submission. Previously, events were exempt. (#588)
  • All endpoint metrics now report their proper route tag. This applies to requests, requests.duration, and responses.status_codes. Previously, some some endpoints reported an empty route. (#595)
  • Properly refresh cached project states based on the configured intervals. Previously, Relay may have gone into an endless refresh cycle if the system clock not accurate, or the state had not been updated in the upstream. (#596)
  • Respond with 403 Forbidden when multiple authentication payloads are sent by the SDK. Previously, Relay would authenticate using one of the payloads and silently ignore the rest. (#602)
  • Improve metrics documentation. (#614)
  • Do not scrub event processing errors by default. (#619)

Internal:

  • Add source (who emitted the outcome) to Outcome payload. (#604)
  • Ignore non-Rust folders for faster rebuilding and testing. (#578)
  • Invalid session payloads are now logged for SDK debugging. (#584, #591)
  • Add support for Outcomes generation in external Relays. (#592)
  • Remove unused rev from project state. (#586)
  • Add an outcome endpoint for trusted Relays. (#589)
  • Emit outcomes for event payloads submitted in attachment files. (#609)
  • Split envelopes that contain sessions and other items and ingest them independently. (#610)
  • Removed support for legacy per-key quotas. (#616)
  • Security events (CSP, Expect-CT, Expect-Staple, and HPKP) are now placed into a dedicated security item in envelopes, rather than the generic event item. This allows for quick detection of the event type for rate limiting. (#617)

0.5.9

  • Relay has a logo now!
  • New explicit envelope/ endpoint. Envelopes no longer need to be sent with the right content-type header (to cater to browser JS).
  • Introduce an Envelope item type for transactions.
  • Support environment variables and CLI arguments instead of command line parameters.
  • Return status 415 on wrong content types.
  • Normalize double-slashes in request URLs more aggressively.
  • Add an option to generate credentials on stdout.

Internal:

  • Serve project configs to downstream Relays with proper permission checking.
  • PII: Make and/or selectors specific.
  • Add a browser filter for IE 11.
  • Changes to release parsing.
  • PII: Expose event values as part of generated selector suggestions.

0.5.8

Internal:

  • Fix a bug where exception values and the device name were not PII-strippable.

0.5.7

  • Docker images are now also pushed to Docker Hub.
  • New helper function to generate PII selectors from event data.

Internal:

  • Release is now a required attribute for session data.
  • unknown can now be used in place of unknown_error for span statuses. A future release will change the canonical format from unknown_error to unknown.

0.5.6

  • Fix a bug where Relay would stop processing events if Sentry is down for only a short time.
  • Improvements to architecture documentation.
  • Initial support for rate limiting by event type ("scoped quotas")
  • Fix a bug where key_id was omitted from outcomes created by Relay.
  • Fix a bug where it was not permitted to send content-encoding as part of a CORS request to store.

Internal:

  • PII processing: Aliases for value types ($error instead of $exception to be in sync with Discover column naming) and adding a default for replace-redactions.
  • It is now valid to send transactions and spans without op set, in which case a default value will be inserted.

0.5.5

  • Suppress verbose DNS lookup logs.

Internal:

  • Small performance improvements in datascrubbing config converter.
  • New, C-style selector syntax (old one still works)

0.5.4

Internal:

  • Add event contexts to pii=maybe.
  • Fix parsing of msgpack breadcrumbs in Rust store.
  • Envelopes sent to Rust store can omit the DSN in headers.
  • Ability to quote/escape special characters in selectors in PII configs.

0.5.3

  • Properly strip the linux binary to reduce its size
  • Allow base64 encoded JSON event payloads (#466)
  • Fix multipart requests without trailing newline (#465)
  • Support for ingesting session updates (#449)

Internal:

  • Validate release names during event ingestion (#479)
  • Add browser extension filter (#470)
  • Add pii=maybe, a new kind of event schema field that can only be scrubbed if explicitly addressed.
  • Add way to scrub filepaths in a way that does not break processing.

0.5.2

  • Fix trivial Redis-related crash when running in non-processing mode.
  • Limit the maximum retry-after of a rate limit. This is necessary because of the "Delete and ignore future events" feature in Sentry.
  • Project caches are now evicted after project_grace_period has passed. If you have that parameter set to a high number you may see increased memory consumption.

Internal:

  • Misc bugfixes in PII processor. Those bugs do not affect the legacy data scrubber exposed in Python.
  • Polishing documentation around PII configuration format.
  • Signal codes in mach mechanism are no longer required.

0.5.1

  • Ability to fetch project configuration from Redis as additional caching layer.
  • Fix a few bugs in release filters.
  • Fix a few bugs in minidumps endpoint with processing enabled.

Internal:

  • Fix a bug in the PII processor that would always remove the entire string on pattern rules.
  • Ability to correct some clock drift and wrong system time in transaction events.

0.5.0

  • The binary has been renamed to relay.
  • Updated documentation for metrics.

Internal:

  • The package is now called sentry-relay.
  • Renamed all Semaphore* types to Relay*.
  • Fixed memory leaks in processing functions.

0.4.65

  • Implement the Minidump endpoint.
  • Implement the Attachment endpoint.
  • Implement the legacy Store endpoint.
  • Support a plain Authorization header in addition to X-Sentry-Auth.
  • Simplify the shutdown logic. Relay now always takes a fixed configurable time to shut down.
  • Fix healthchecks in Static mode.
  • Fix internal handling of event attachments.
  • Fix partial reads of request bodies resulting in a broken connection.
  • Fix a crash when parsing User-Agent headers.
  • Fix handling of events sent with sentry_version=2.0 (Clojure SDK).
  • Use mmap to load the GeoIP database to improve the memory footprint.
  • Revert back to the system memory allocator.

Internal:

  • Preserve microsecond precision in all time stamps.
  • Record event ids in all outcomes.
  • Updates to event processing metrics.
  • Add span status mapping from open telemetry.

0.4.64

  • Switched to jemalloc as global allocator.
  • Introduce separate outcome reason for invalid events.
  • Always consume request bodies to the end.
  • Implemented minidump ingestion.
  • Increas precisions of timestamps in protocol.

0.4.63

  • Refactor healthchecks into two: Liveness and readiness (see code comments for explanation for now).
  • Allow multiple trailing slashes on store endpoint, e.g. /api/42/store///.
  • Internal refactor to prepare for envelopes format.

Internal:

  • Fix a bug where glob-matching in filters did not behave correctly when the to-be-matched string contained newlines.
  • Add moz-extension: as scheme for browser extensions (filtering out Firefox addons).
  • Raise a dedicated Python exception type for invalid transaction events. Also do not report that error to Sentry from Relay.

0.4.62

  • Various performance improvements.

0.4.61

Internal:

  • Add thread.errored attribute (#306).

0.4.60

  • License is now BSL instead of MIT (#301).
  • Improve internal metrics and logging (#296, #297, #298).
  • Fix unbounded requests to Sentry for project configs (#295, #300).
  • Fix rejected responses from Sentry due to size limit (#303).
  • Expose more options for configuring request concurrency limits (#311).

Internal:

  • Transaction events with negative duration are now rejected (#291).
  • Fix a panic when normalizing certain dates.

0.4.59

Internal:

  • Fix: Normalize legacy stacktrace attributes (#292)
  • Fix: Validate platform attributes in Relay (#294)
  • Flip the flag that indicates Relay processing (#293)

0.4.58

  • Evict project caches after some time (#287)
  • Selectively log internal errors to stderr (#285)
  • Add an error boundary to parsing project states (#281)

Internal:

  • Add event size metrics (#286)
  • Normalize before datascrubbing (#290)
  • Add a config value for thread counts (#283)
  • Refactor outcomes for parity with Sentry (#282)
  • Add flag that relay processed an event (#279)

0.4.57

Internal:

  • Stricter validation of transaction events.

0.4.56

Internal:

  • Fix a panic in trimming.

0.4.55

Internal:

  • Fix more bugs in datascrubbing converter.

0.4.54

Internal:

  • Fix more bugs in datascrubbing converter.

0.4.53

Internal:

  • Fix more bugs in datascrubbing converter.

0.4.52

Internal:

  • Fix more bugs in datascrubbing converter.

0.4.51

Internal:

  • Fix a few bugs in datascrubbing converter.
  • Accept trailing slashes.

Normalization:

  • Fix a panic on overflowing timestamps.

0.4.50

Internal:

  • Fix bug where IP scrubbers were applied even when not enabled.

0.4.49

  • Internal changes.

0.4.48

Internal:

  • Fix various bugs in the datascrubber and PII processing code to get closer to behavior of the Python implementation.

0.4.47

Internal:

  • Various work on re-implementing Sentry's /api/X/store endpoint in Relay. Relay can now apply rate limits based on Redis and emit the correct outcomes.

0.4.46

Internal:

  • Resolved a regression in IP address normalization. The new behavior is closer to a line-by-line port of the old Python code.

0.4.45

Normalization:

  • Resolved an issue where GEO IP data was not always infered.

0.4.44

Normalization:

  • Only take the user IP address from the store request's IP for certain platforms. This restores the behavior of the old Python code.

0.4.43

Normalization:

  • Bump size of breadcrumbs.
  • Workaround for an issue where we would not parse OS information from User Agent when SDK had already sent OS information.
  • Further work on Sentry-internal event ingestion.

0.4.42

Normalization:

  • Fix normalization of version strings from user agents.

0.4.41

  • Support extended project configuration.

Internal:

  • Implement event filtering rules.
  • Add basic support for Sentry-internal event ingestion.
  • Parse and normalize user agent strings.

0.4.40

Internal:

  • Restrict ranges of timestamps to prevent overflows in Python code and UI.

0.4.39

Internal:

  • Fix a bug where stacktrace trimming was not applied during renormalization.

0.4.38

Internal:

  • Added typed spans to Event.

0.4.37

Internal:

  • Added orig_in_app to frame data.

0.4.36

Internal:

  • Add new .NET versions for context normalization.

0.4.35

Internal:

  • Fix bug where thread's stacktraces were not normalized.
  • Fix bug where a string at max depth of a databag was stringified again.

0.4.34

Internal:

  • Added data attribute to frames.
  • Added a way to override other trimming behavior in Python normalizer binding.

0.4.33

Internal:

  • Plugin-provided context types should now work properly again.

0.4.32

Internal:

  • Removed function_name field from frame and added raw_function.

0.4.31

Internal:

  • Add trace context type.

0.4.30

Internal:

  • Make exception messages/values larger to allow for foreign stacktrace data to be attached.

0.4.29

Internal:

  • Added function_name field to frame.

0.4.28

Internal:

  • Add missing context type for sessionstack.

0.4.27

Internal:

  • Increase frame vars size again! Byte size was fine, but max depth was way too small.

0.4.26

Internal:

  • Reduce frame vars size.

0.4.25

Internal:

  • Add missing trimming to frame vars.

0.4.24

Internal:

  • Reject non-http/https help_urls in exception mechanisms.

0.4.23

Internal:

  • Add basic truncation to event meta to prevent payload size from spiralling out of control.

0.4.22

Internal:

  • Added grouping enhancements to protocol.

0.4.21

Internal:

  • Updated debug image interface with more attributes.

0.4.20

Internal:

  • Added support for lang frame and stacktrace attribute.

0.4.19

Internal:

  • Slight changes to allow replacing more normalization code in Sentry with Rust.

0.4.18

Internal:

  • Allow much larger payloads in the extra attribute.

0.4.17

Internal:

  • Added support for protocol changes related to upcoming sentry SDK features. In particular the none event type was added.

0.4.16

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.15

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.14

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.13

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.12

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.11

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.10

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.9

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.8

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.7

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.6

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.5

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.4

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.3

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.2

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.1

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

0.4.0

Introducing new Relay modes:

  • proxy: A proxy for all requests and events.
  • static: Static configuration for known projects in the file system.
  • managed: Fetch configurations dynamically from Sentry and update them.

The default Relay mode is managed. Users upgrading from previous versions will automatically activate the managed mode. To change this setting, add relay.mode to config.yml or run semaphore config init from the command line.

Breaking Change: If Relay was used without credentials, the mode needs to be set to proxy. The default managed mode requires credentials.

For more information on Relay modes, see the documentation page.

Configuration Changes

  • Added cache.event_buffer_size to control the maximum number of events that are buffered in case of network issues or high rates of incoming events.
  • Added limits.max_concurrent_requests to limit the number of connections that this Relay will use to communicate with the upstream.
  • Internal error reporting is now disabled by default. To opt in, set sentry.enabled.

Bugfixes

  • Fix a bug that caused events to get unconditionally dropped after five seconds, regardless of the cache.event_expiry configuration.
  • Fix a memory leak in Relay's internal error reporting.

0.3.0

  • Changed PII stripping rule format to permit path selectors when applying rules. This means that now $string refers to strings for instance and user.id refers to the id field in the user attribute of the event. Temporarily support for old rules is retained.

0.2.7

  • store: Minor fixes to be closer to Python. Ability to disable trimming of objects, arrays and strings.

0.2.6

  • Fix bug where PII stripping would remove containers without leaving any metadata about the retraction.
  • Fix bug where old redactPair rules would stop working.

0.2.5

  • Rewrite of PII stripping logic. This brings potentially breaking changes to the semantics of PII configs. Most importantly field types such as "freeform" and "databag" are gone, right now there is only "container" and "text". All old field types should have become an alias for "text", but take extra care in ensuring your PII rules still work.

  • store: Minor fixes to be closer to Python.

0.2.4

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

  • store: Remove stray print statement.

0.2.3

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

  • store: Fix main performance issues.

0.2.2

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

  • store: Fix segfault when trying to process contexts.
  • store: Fix trimming state "leaking" between interfaces, leading to excessive trimming.
  • store: Don't serialize empty arrays and objects (with a few exceptions).

0.2.1

For users of relay, nothing changed at all. This is a release to test embedding some Rust code in Sentry itself.

  • libsemaphore: Expose CABI for normalizing event data.

0.2.0

Our first major iteration on Relay has landed!

  • User documentation is now hosted at https://docs.sentry.io/relay/.
  • SSL support is now included by default. Just configure a TLS identity and you're set.
  • Updated event processing: Events from older SDKs are now supported. Also, we've fixed some bugs along the line.
  • Introduced full support for PII stripping. See PII Configuration for instructions.
  • Configure with static project settings. Relay will skip querying project states from Sentry and use your provided values instead. See Project Configuration for a full guide.
  • Relay now also acts as a proxy for certain API requests. This allows it to receive CSP reports and Minidump crash reports, among others. It also sets X-Forwarded-For and includes a Relay signature header.

Besides that, there are many technical changes, including:

  • Major rewrite of the internals. Relay no longer requires a special endpoint for sending events to upstream Sentry and processes events individually with less delay than before.
  • The executable will exit with a non-zero exit code on startup errors. This makes it easier to catch configuration errors.
  • Removed libsodium as a production dependency, greatly simplifying requirements for the runtime environment.
  • Greatly improved logging and metrics. Be careful with the DEBUG and TRACE levels, as they are very verbose now.
  • Improved docker containers.

0.1.3

  • Added support for metadata format

0.1.2

  • JSON logging (#32)
  • Update dependencies

0.1.1

  • Rename "sentry-relay" to "semaphore"
  • Use new features from Rust 1.26
  • Prepare binary and Python builds (#20)
  • Add Dockerfile (#23)

0.1.0

An initial release of the tool.