- This release requires Python 3.10 or later. There are no intentionally breaking changes included in this release, but we stopped testing against Python 3.9.
- Fix: accept transactions with unfinished spans. (#3162)
- Add
allow_negative
toBuiltinMeasurementKey
. Filter out negative BuiltinMeasurements ifallow_negative
is false. (#2982) - Add ability to block metric tags matching a glob pattern. (#2973)
- Add ability to block metrics matching a glob pattern. (#2954)
- Fix JSON capitalization for cardinality config. (#2979)
- Add automatic PII scrubbing to
logentry.params
. (#2956)
- This release requires Python 3.9 or later. There are no intentionally breaking changes included in this release, but we stopped testing against Python 3.8.
- Normalize event timestamps before validating them, fixing cases where Relay would drop valid events with reason "invalid_transaction". (#2878)
- Normalize error and trace-ids. Values must be valid UUIDs. (#2931)
- Add a data category for indexed spans. (#2937)
- Add
_metrics_summary
as temporary key onEvent
for a DDM experiment. (#2757) - Add metric_bucket data category. (#2824)
normalize_performance_score
stores 0 to 1 cdf score instead of weighted score for each performance score component. (#2734)
- License is now FSL instead of BSL (#2739)
- Skip running
NormalizeProcessor
on renormalization. (#2744)
- Validate span timestamps and IDs in light normalization on renormalization. (#2679)
- Rename
validate_sampling_condition
tovalidate_rule_condition
. (#2720)
- Add
validate_pii_selector
to validate safe fields. (#2687)
- Add context for NEL (Network Error Logging) reports to the event schema. (#2421)
- Drop events starting or ending before January 1, 1970 UTC. (#2613)
- Remove event spans starting or ending before January 1, 1970 UTC. (#2627)
- Remove event breadcrumbs dating before January 1, 1970 UTC. (#2635)
- Add
PerformanceScoreConfig
config and performance score calculations to measurements for frontend events. (#2632) - Add
locale
,screen_width_pixels
,screen_height_pixels
, anduuid
to the device context. (#2640) - Add feedback DataCategory. (#2604)
- Add
scraping_attempts
field to the event schema. (#2575) - Drop events starting or ending before January 1, 1970 UTC. (#2613)
- Add
Reservoir
variant toSamplingRule
. (#2550) - Remove dynamic sampling ABI. (#2515)
- Scrub span descriptions with encoded data images. (#2560)
- Filter out exceptions originating in Safari extensions. (#2408)
- Add a
DataCategory
for monitor seats (crons). (#2480) - Expose global config normalization function. (#2498)
- Add rudimentary Mypy setup. (#2384)
This release requires Python 3.8 or later.
- Add the configuration protocol for generic metrics extraction. (#2252)
- Modernize python syntax. (#2264)
- Compile regexes in PII config validation. (#2152)
- Add
txNameReady
flag to project config. (#2128)
- Store
geo.subdivision
of the end user location. (#2058) - Scrub URLs in span descriptions. (#2095)
- Add new FFI function for running dynamic sampling. (#2091)
- Add a data category for indexed profiles. (#2051)
- Add
thread.state
field to protocol. (#1896) - Smart trim loggers for Java platforms. (#1941)
- Perform PII scrubbing on meta's original_value field. (#1892)
- PII scrub
span.data
by default. (#1953) - Scrub sensitive cookies. (#1951)
- Changes how device class is determined for iPhone devices. Instead of checking processor frequency, the device model is mapped to a device class. (#1970)
- Don't sanitize transactions if no clustering rules exist and no UUIDs were scrubbed. (#1976)
- Add iPad support for device.class synthesis in light normalization. (#2008)
- Include unknown feature flags in project config when serializing it. (#2040)
- Protocol validation for source map image type. (#1869)
- Scrub
span.data.http.query
with default scrubbers. (#1889) - Add Cloud Resource context. (#1854)
- Add a
DataCategory
for monitors (crons). (#1886)
- Add
instruction_addr_adjustment
field toRawStacktrace
. (#1716) - Make sure to scrub all the fields with PII. If the fields contain an object, the entire object will be removed. (#1789)
- Add new schema for dynamic sampling rules. (#1790
- Keep meta for removed custom measurements. (#1815)
- Add utility function for matching CODEOWNER paths against a stacktrace filepath (#1746)
- The minimum required Python version is now 3.8. This release does not contain known breaking changes for Python 3.7, but we no longer guarantee compatibility.
- Add support for decaying functions in dynamic sampling rules. (#1692)
- Add Profiling Context to event protocol. (#1748)
- Add OpenTelemetry Context to event protocol. (#1617)
- Add
app.in_foreground
andthread.main
flag to event protocol. (#1578) - Scrub all fields with IP addresses rather than only known IP address fields. (#1725)
- Disallow
-
in measurement and breakdown names. These items are converted to metrics, which do not allow-
in their name. (#1571) - Validate the distribution name in the event. (#1556)
- Use correct meta object for logentry in light normalization. (#1577)
- Restore correct behavior when
is_renormalize
is specified onnormalize_event
. (#1548)
Warning: This release contains a regression. Please update to a more recent version.
- Add
transaction_info
to event payloads, including the transaction's source and internal original transaction name. (#1330) - Add user-agent parsing to replays processor. (#1420)
convert_datascrubbing_config
will now return an error string when conversion fails on big regexes. (#1474)relay_pii_strip_event
now treats any key containingtoken
as a password. (#1527)- Add data category for indexed transactions. This will come to represent stored transactions, while the existing category will represent transaction metrics. (#1535)
- Add a data category constant for Replays. (#1239)
- 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)
- Extend trace sampling protocol to deal with flat user data. (#1318)
- Fix missing profile data category in the python library of 0.8.11 by regenerating the header for C-bindings. (#1278)
- Add protocol support for custom units on transaction measurements. (#1256)
- Add a profile data category and count profiles in an envelope to apply rate limits. (#1259)
- Map Windows version from raw_description to version name (XP, Vista, 11, ...). (#1219)
- Update rust-minidump to 0.10.0 (#1209)
- Update regex to 1.5.5 (#1207)
- Update the user agent parser (uap-core Feb 2020 to Nov 2021). (#1143, #1145)
- Improvements to Unity OS context parsing (#1150)
- Add the exclusive time of a span. (#1061)
- Add
ingest_path
to the event schema, capturing Relays that processed this event. (#1062) - Retrieve OS Context for Unity Events. (#1072)
- Protocol support for client reports. (#1081)
- Add the exclusive time of the transaction's root span. (#1083)
- Build and publish binary wheels for
arm64
/aarch64
on macOS and Linux. (#1100)
- Bump release parser to 1.3.0 and add ability to compare versions. (#1038)
- Bump release parser to 1.1.4. (#1031)
- Bump release parser to 1.0.0. (#1013)
- Add back
breadcrumb.event_id
. (#977) - Add
frame.stack_start
for chained async stack traces. (#981) - Fix roundtrip error when PII selector starts with number. (#982)
- Explicitly declare reprocessing context. (#1009)
- Add
safari-web-extension
to known browser extensions. (#1011)
- Deny backslashes in release names. (#904)
- Remove dependencies on
openssl
andzlib
. (#914) - Fix
and
andor
operators in PII selectors on fields declaringpii=maybe
. (#932) - Enable PII stripping on
user.username
. (#935) - Expose dynamic rule condition validation. (#941)
- Add NSError to mechanism. (#925)
- Add snapshot to the stack trace interface. (#927)
- Drop python 2.7 support. (#929)
- Fix compile errors in the sdist with Rust 1.47 and later. (#801)
- Emit more useful normalization meta data for invalid tags. (#808)
- Internal refactoring such that validating of characters in tags no longer uses regexes internally. (#814)
- Normalize
breadcrumb.ty
intobreadcrumb.type
for broken Python SDK versions. (#824) - Emit event errors and normalization errors for unknown breadcrumb keys. (#824)
- Make
$error.value
pii=true
. (#837) - Add protocol support for WASM. (#852)
- Add missing fields for Expect-CT reports. (#865)
- Support more directives in CSP reports, such as
block-all-mixed-content
andrequire-trusted-types-for
. (#876) - Fix a long-standing bug where log messages were not addressible as
$string
. (#882) - Use manylinux2010 to build releases instead of manylinux1 to fix issues with newer Rust. (#917)
- Fix issue where
$span
would not be recognized in Advanced Data Scrubbing. (#781) - Require macOS 10.15.0 or newer for the macOS wheel after moving to GitHub Actions. (#780)
- 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)
- Rename to the library target to
relay_cabi
and add documentation. (#763) - Update FFI bindings with a new implementation for error handling. (#766)
- Breaking: Delete
scrub_event
function from public API. (#773) - Add Relay version version to challenge response. (#758)
- Removed deprecated
pii_selectors_from_event
. - Return
UnpackErrorSignatureExpired
fromvalidate_register_response
when the timestamp is too old.
- Updates the authentication mechanism by introducing a signed register state. Signatures of
create_register_challenge
andvalidate_register_response
now take a mandatorysecret
parameter, and the public key is encoded into the state. (#743)
Note: This accidentally got released as 0.15.13 as well, which has since been yanked.
- Fix Python 3 incompatibilities in Relay authentication helpers. (#712)
- Always create a spans array for transactions in normalization. (#667)
- Retain the full span description in transaction events instead of trimming it. (#674)
- Move hashed user ip addresses to
user.id
to avoid invalid IPs going into Snuba. (#692) - Add
is_version_supported
to check for Relay compatibility during authentication. (#697)
- Add SpanStatus to span struct. (#603)
- 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)
- Add missing .NET 4.8 version mapping for runtime context normalization. (#642)
- Expose
DataCategory
andSpanStatus
via the C-ABI to Python for code sharing. (#651)
- Set default transaction name (#576)
- Apply clock drift correction based on received_at (#580, #582)
- Add AWS Security Scanner to web crawlers (#577)
- Do not default transactions to level error (#585)
- Update
sentry-release-parser
to 0.6.0 (#590) - Add schema for success metrics (failed and errored processing) (#593)
- 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.
- Fix a bug where exception values and the device name were not PII-strippable.
- Release is now a required attribute for session data.
unknown
can now be used in place ofunknown_error
for span statuses. A future release will change the canonical format fromunknown_error
tounknown
.
- Minor updates to 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.
- Small performance improvements in datascrubbing config converter.
- New, C-style selector syntax (old one still works)
- 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.
- 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.
- Add missing errors for JSON parsing and release validation (#478)
- Expose more datascrubbing utils (#464)
- 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.
- Bump xcode version from 7.3 to 9.4, dropping wheel support for some older OS X versions.
- New function
validate_pii_config
. - 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.
- The package is now called
sentry-relay
. - Renamed all
Semaphore*
types toRelay*
. - Fixed memory leaks in processing functions.
- 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.
- Fix glob-matching of newline characters.
- Added newline support for general glob code.
- Added span status mapping to python library.
- 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.
- Spec out values of
event.contexts.trace.status
. none
is now no longer a valid environment name.- Do no longer drop transaction events in renormalization.
- Various performance improvements.
- Add
thread.errored
attribute (#306).
- License is now BSL instead of MIT (#301).
- Transaction events with negative duration are now rejected (#291).
- Fix a panic when normalizing certain dates.
- Expose globbing code from Relay to Python (#288)
- Normalize before datascrubbing (#290)
- Selectively log internal errors to stderr (#285)
- Do not ignore
process_value
result inscrub_event
(#284)
- Stricter validation of transaction events
- Fix a panic in trimming
- Fix more bugs in datascrubbing converter
- Fix more bugs in datascrubbing converter
- Fix more bugs in datascrubbing converter
- Fix more bugs in datascrubbing converter
- Fix a few bugs in datascrubbing converter
- Fix a panic on overflowing timestamps
- Fix bug where IP scrubbers were applied even when not enabled
- Fix handling of panics in CABI/Python bindings
- Fix various bugs in the datascrubber and PII processing code to get closer to behavior of the Python implementation.
- Fix encoding issue in the Python layer of event normalization.
- Resolved a regression in IP address normalization. The new behavior is closer to a line-by-line port of the old Python code.
- Resolved an issue where GEO IP data was not always infered.
- Only take the user IP address from the store request's IP for certain platforms. This restores the behavior of the old Python code.
- 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.
- Fix normalization of version strings from user agents.
- Parse and normalize user agent strings.
- Restrict ranges of timestamps to prevent overflows in Python code and UI.
- Fix a bug where stacktrace trimming was not applied during renormalization.
- Added typed spans to
Event
.
- Added
orig_in_app
to frame data.
- Add new .NET versions for context normalization.
- Fix bug where thread's stacktraces were not normalized.
- Fix bug where a string at max depth of a databag was stringified again.
- Added
data
attribute to frames. - Added a way to override other trimming behavior in Python normalizer binding.
- Smaller protocol adjustments related to rolling out re-normalization in Rust.
- Plugin-provided context types should now work properly again.
- Removed
function_name
field from frame and addedraw_function
.
- Add trace context type.
- Make exception messages/values larger to allow for foreign stacktrace data to be attached.
- Added
function_name
field to frame.
- Add missing context type for sessionstack.
- Increase frame vars size again! Byte size was fine, but max depth was way too small.
- Reduce frame vars size.
- Add missing trimming to frame vars.
- Reject non-http/https
help_urls
in exception mechanisms (#192)
- Add basic truncation to event meta to prevent payload size from spiralling out of control.
- Improve the grouping protocol config (#190)
- Alias level critical as fatal (#182)
- Add device properties from Java/.NET SDKs (#185)
- Add
lang
to frame and stacktrace (#186)
- Add mode for renormalization (#181)
- Restore the original behavior with supporting very large values in extra (#180)
- Add untyped spans for tracing (#179)
- Add the
none
event type
- Add support for synthetic mechanism markers (#177)
- Fix processors: Do not create
path_item
inenter_nothing
- Rename
template_info
to template - Add two new untyped context types:
gpu
,monitors
- Rewrite
derive(ProcessValue)
to useStructure::each_variant
(#175)
- Allow arrays as header values (#176)
- Swap
python-json-read-adapter
to git dependency
- Run json.dumps at max depth in databag (#174)
- Get oshint case-insensitively
- Trim
time_spent
to max value of db column
- Trim containers one level before max_depth (#173)
- Unconditionally overwrite
received
- Fix bugs in array trimming, more code comments (#172)
- Deal with surrogate escapes in python bindings
- Reject exceptions with empty type and value (#170)
- Validate remote_addr before backfilling into user (#171)
- Adjust limits to fit values into db (#167)
- Environment is 64 chars in db
- Normalize macOS (#168)
- Use right maxchars for
transaction
,dist
,release
- Do not add error to invalid url
- Reject unknown debug images (#163)
- Include original_value in
Meta::eq
(#164) - Emit correct expectations for common types (#162)
- Permit invalid emails in user interface (#161)
- Drop long tags correctly (#165)
- Do not skip null values in pairlists (#166)
- Fix broken sdk_info parsing (#156)
- Add basic snapshot tests for normalize and event parsing (#154)
- Context trimming (#153)
- Coerce PHP frame vars array to object (#159)
- Remove content-type params
- Dont attempt to free() if python is shutting down
- Improve cookie header normalizations (#151)
- Implement LogEntry formatting (#152)
- Deduplicate tags (#155)
- Treat empty paths like no paths in frame normalization
- Remove cookie header when explicit cookies are given
- Do not remove empty cookies or headers (#138)
- Skip more empty containers (#139)
- Make
request.header
values lenient (#145) - Remove internal tags when backfilling (#146)
- Implement advanced context normalization (#140)
- Retain additional properties in contexts (#141)
- Implement very lenient URL parsing (#147)
- Do not require breadcrumb timestamps (#144)
- Reject tags with long keys (#149)
- Add new options max_concurrent_events (#134)
- Dont move stacktrace before normalizing it (#135)
- Fix broken repr and crash when shutting down python
- Port slim_frame_data (#137)
- Special treatment for ellipsis in URLs
- Parse request bodies
- Changed PII stripping rule format to permit path selectors when applying rules. This means that now
$string
refers to strings for instance anduser.id
refers to theid
field in theuser
attribute of the event. Temporarily support for old rules is retained.
- Minor fixes to be closer to Python. Ability to disable trimming of objects, arrays and strings.
- Fix bug where PII stripping would remove containers without leaving any metadata about the retraction.
- Fix bug where old
redactPair
rules would stop working.
-
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. -
Minor fixes to be closer to Python.
- Remove stray print statement.
- Fix main performance issues.
- Fix segfault when trying to process contexts.
- Fix trimming state "leaking" between interfaces, leading to excessive trimming.
- Don't serialize empty arrays and objects (with a few exceptions).
- Expose CABI for normalizing event data.
- 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.
- Added support for metadata format
- Update dependencies
- Rename "sentry-relay" to "semaphore"
- Use new features from Rust 1.26
- Prepare Python builds (#20)
An initial release of the library.