|
4 | 4 |
|
5 | 5 | ### Features |
6 | 6 |
|
7 | | -- Add `LocalSentrySpan` to `sentry-compose` so apps can provide a parent `ISpan` to a composable subtree and have nested `SentryTraced` spans attach to it ([#6112]https://github.com/getsentry/sentry-java/pull/6112) |
8 | | -- Add `dataCollection`, a fine-grained replacement for `sendDefaultPii`, for controlling data collected automatically by SDK integrations ([#5759](https://github.com/getsentry/sentry-java/pull/5759)) |
9 | | - - `sendDefaultPii` remains supported for backwards compatibility. When `dataCollection` is not configured, the SDK preserves the existing `sendDefaultPii` behavior. |
10 | | - - Configuring any `dataCollection` option makes it the source of truth. `sendDefaultPii` is then ignored, and omitted `dataCollection` options use the defaults below. |
11 | | - - The Logback appender is a compatibility exception. When an encoder is configured, `sendDefaultPii=true` continues to include the original message template and parameters. To opt in independently of `sendDefaultPii`, set `<includeUnencodedMessage>true</includeUnencodedMessage>` on the Sentry appender in `logback.xml` or `logback-spring.xml`. |
12 | | - - Data explicitly supplied through APIs such as `Sentry.setUser`, scopes, event processors, or `beforeSend` is not affected. |
13 | | - |
14 | | - To opt in to the documented `dataCollection` defaults without configuring an individual option: |
15 | | - |
16 | | - ```java |
17 | | - Sentry.init(options -> options.getDataCollection().forceDataCollection()); |
18 | | - ``` |
19 | | - |
20 | | - | Option | Default | Behavior | |
21 | | - | --- | --- | --- | |
22 | | - | `userInfo` | `true` | Allows integrations to populate user identity and IP address information automatically. | |
23 | | - | `cookies` | `{ mode: DENY_LIST, terms: [] }` | Collects cookies while filtering sensitive values. | |
24 | | - | `httpHeaders.request` | `{ mode: DENY_LIST, terms: [] }` | Collects request headers while filtering sensitive values. | |
25 | | - | `httpHeaders.response` | `{ mode: DENY_LIST, terms: [] }` | Collects response headers while filtering sensitive values. | |
26 | | - | `httpBodies` | All supported body types | Collects supported incoming and outgoing request and response bodies. An empty set disables body collection. | |
27 | | - | `urlQueryParams` | `{ mode: DENY_LIST, terms: [] }` | Collects URL query parameters while filtering sensitive values. | |
28 | | - | `graphql.document` | `true` | Collects GraphQL documents. | |
29 | | - | `graphql.variables` | `true` | Collects GraphQL variables. | |
30 | | - | `databaseQueryData` | `true` | Allows collection of associated query data, such as bound parameters, write payloads, and results, where supported. Sanitized query statements and structural database metadata remain available. | |
31 | | - | `filePaths` | `true` | Allows file-system instrumentation to collect file and directory paths. File extensions and byte counts remain available when disabled. | |
| 7 | +- Deprecate `sendDefaultPii` in favor of `dataCollection` ahead of its removal in 9.0 ([#6158](https://github.com/getsentry/sentry-java/pull/6158)) |
| 8 | +- Make the tombstone merge time threshold configurable via `SentryAndroidOptions.setTombstoneMergeTimeThresholdMillis` and the `io.sentry.tombstone.merge-time-threshold-millis` manifest option ([#6154](https://github.com/getsentry/sentry-java/pull/6154)) |
32 | 9 |
|
33 | | - Cookies, HTTP headers, and URL query parameters support three modes: |
34 | | - |
35 | | - - `OFF`: Do not collect the category. |
36 | | - - `DENY_LIST`: Collect values except those matching the built-in sensitive deny-list or additional configured terms. |
37 | | - - `ALLOW_LIST`: Only send plaintext values for matching terms. The built-in sensitive deny-list still applies. |
38 | | - |
39 | | - Matching is case-insensitive and partial. The built-in sensitive deny-list contains `auth`, `token`, `secret`, `password`, `passwd`, `pwd`, `key`, `jwt`, `bearer`, `sso`, `saml`, `csrf`, `xsrf`, `credentials`, `session`, `sid`, and `identity`. Filtered values are replaced with `"[Filtered]"`. Custom deny-list terms extend rather than replace this list. |
40 | | - |
41 | | - Configure all HTTP body types, a custom cookie deny-list, a request-header allow-list, and disable URL query parameter and file path collection in an options callback: |
42 | | - |
43 | | - ```java |
44 | | - Sentry.init( |
45 | | - options -> { |
46 | | - options |
47 | | - .getDataCollection() |
48 | | - .setHttpBodies( |
49 | | - EnumSet.of( |
50 | | - HttpBodyType.INCOMING_REQUEST, |
51 | | - HttpBodyType.OUTGOING_REQUEST, |
52 | | - HttpBodyType.INCOMING_RESPONSE, |
53 | | - HttpBodyType.OUTGOING_RESPONSE)); |
54 | | - options |
55 | | - .getDataCollection() |
56 | | - .setCookies( |
57 | | - KeyValueCollectionBehavior.denyList( |
58 | | - "forwarded", "-ip", "remote-", "via", "-user")); |
59 | | - options |
60 | | - .getDataCollection() |
61 | | - .getHttpHeaders() |
62 | | - .setRequest( |
63 | | - KeyValueCollectionBehavior.allowList("content-type", "x-request-id")); |
64 | | - options |
65 | | - .getDataCollection() |
66 | | - .setUrlQueryParams(KeyValueCollectionBehavior.off()); |
67 | | - options.getDataCollection().setFilePaths(false); |
68 | | - }); |
69 | | - ``` |
70 | | - |
71 | | - Configure the same options in `sentry.properties`: |
72 | | - |
73 | | - ```properties |
74 | | - data-collection.http-bodies=incoming_request,outgoing_request,incoming_response,outgoing_response |
75 | | - data-collection.cookies.mode=deny_list |
76 | | - data-collection.cookies.terms=forwarded,-ip,remote-,via,-user |
77 | | - data-collection.http-headers.request.mode=allow_list |
78 | | - data-collection.http-headers.request.terms=content-type,x-request-id |
79 | | - data-collection.url-query-params.mode=off |
80 | | - data-collection.file-paths=false |
81 | | - ``` |
| 10 | +### Improvements |
82 | 11 |
|
83 | | - Configure them with Spring Boot properties: |
| 12 | +- Recover Android 17 `MemoryLimiter` app exits recorded as `ApplicationExitInfo.REASON_MEMORY_LIMITER` ([#6174](https://github.com/getsentry/sentry-java/pull/6174)) |
84 | 13 |
|
85 | | - ```properties |
86 | | - sentry.data-collection.http-bodies=incoming-request,outgoing-request,incoming-response,outgoing-response |
87 | | - sentry.data-collection.cookies.mode=deny-list |
88 | | - sentry.data-collection.cookies.terms=forwarded,-ip,remote-,via,-user |
89 | | - sentry.data-collection.http-headers.request.mode=allow-list |
90 | | - sentry.data-collection.http-headers.request.terms=content-type,x-request-id |
91 | | - sentry.data-collection.url-query-params.mode=off |
92 | | - sentry.data-collection.file-paths=false |
93 | | - ``` |
| 14 | +## 8.58.0 |
94 | 15 |
|
95 | | - Configure them in `AndroidManifest.xml`: |
| 16 | +### Features |
96 | 17 |
|
97 | | - ```xml |
98 | | - <meta-data |
99 | | - android:name="io.sentry.data-collection.http-bodies" |
100 | | - android:value="incoming_request,outgoing_request,incoming_response,outgoing_response" /> |
101 | | - <meta-data |
102 | | - android:name="io.sentry.data-collection.cookies.mode" |
103 | | - android:value="deny_list" /> |
104 | | - <meta-data |
105 | | - android:name="io.sentry.data-collection.cookies.terms" |
106 | | - android:value="forwarded,-ip,remote-,via,-user" /> |
107 | | - <meta-data |
108 | | - android:name="io.sentry.data-collection.http-headers.request.mode" |
109 | | - android:value="allow_list" /> |
110 | | - <meta-data |
111 | | - android:name="io.sentry.data-collection.http-headers.request.terms" |
112 | | - android:value="content-type,x-request-id" /> |
113 | | - <meta-data |
114 | | - android:name="io.sentry.data-collection.url-query-params.mode" |
115 | | - android:value="off" /> |
116 | | - <meta-data |
117 | | - android:name="io.sentry.data-collection.file-paths" |
118 | | - android:value="false" /> |
119 | | - ``` |
| 18 | +- Add `LocalSentrySpan` to `sentry-compose` so apps can provide a parent `ISpan` to a composable subtree and have nested `SentryTraced` spans attach to it ([#6112]https://github.com/getsentry/sentry-java/pull/6112) |
| 19 | +- Add `dataCollection`, a fine-grained replacement for `sendDefaultPii`, for controlling data collected automatically by SDK integrations. See the Data Collection documentation for [Android](https://docs.sentry.io/platforms/android/configuration/options/#dataCollection), [Java](https://docs.sentry.io/platforms/java/configuration/options/#dataCollection), and [Spring Boot](https://docs.sentry.io/platforms/java/guides/spring-boot/configuration/options/#dataCollection) ([#5759](https://github.com/getsentry/sentry-java/pull/5759)) |
120 | 20 |
|
121 | | - See the [Data Collection documentation](https://docs.sentry.io/platforms/java/configuration/options/#dataCollection) for all configuration keys, supported integrations, and migration guidance. |
| 21 | +> [!WARNING] |
| 22 | +> `sendDefaultPii` will be removed in the next major SDK version. Migrate to `dataCollection` before upgrading. |
122 | 23 |
|
123 | 24 | ### Fixes |
124 | 25 |
|
|
214 | 115 | ### Fixes |
215 | 116 |
|
216 | 117 | - Keep dropped tombstone and ANR events dropped, instead of reporting the same app exit again at every app start ([#6002](https://github.com/getsentry/sentry-java/pull/6002)) |
| 118 | +- Clear the persisted replay id on SDK init, so a replay id from a previous process is no longer attached to ANR events from the current one ([#6033](https://github.com/getsentry/sentry-java/pull/6033)) |
217 | 119 | - Apply `Sentry.withScope` and `Sentry.withIsolationScope` data to events captured inside the callback when `globalHubMode` is enabled ([#6004](https://github.com/getsentry/sentry-java/pull/6004)) |
218 | 120 | - `globalHubMode` is enabled by default on Android, where tags, extras, contexts and level set inside the callback were silently dropped |
219 | 121 | - Scopes that are explicitly made current, e.g. via `Sentry.setCurrentScopes` or the `SentryContext` coroutine integration, are now also honoured when `globalHubMode` is enabled |
|
0 commit comments