Releases: getsentry/sentry-java
Releases · getsentry/sentry-java
8.25.0
Fixes
- [ANR] Removed AndroidTransactionProfiler lock (#4817)
 - Avoid ExecutorService for DefaultCompositePerformanceCollector timeout (#4841)
- This avoids infinite data collection for never stopped transactions, leading to OOMs
 
 - Fix wrong .super() call in SentryTimberTree (#4844)
 
Improvements
- [ANR] Defer some class availability checks (#4825)
 - Collect PerformanceCollectionData only for sampled transactions (#4834)
- Breaking change: Transactions with a deferred sampling decision (
sampled == null) won't be collecting any performance data anymore (CPU, RAM, slow/frozen frames). 
 - Breaking change: Transactions with a deferred sampling decision (
 
Dependencies
8.24.0
Features
- Attach MDC properties to logs as attributes (#4786)
- MDC properties set using supported logging frameworks (Logback, Log4j2, java.util.Logging) are now attached to structured logs as attributes.
 - The attribute reflected on the log is 
mdc.<key>, where<key>is the original key in the MDC. - This means that you will be able to filter/aggregate logs in the product based on these properties.
 - Only properties with keys matching the configured 
contextTagsare sent as log attributes.- You can configure which properties are sent using 
options.setContextTagsif initalizing manually, or by specifying a comma-separated list of keys with acontext-tagsentry insentry.propertiesorsentry.context-tagsinapplication.properties. - Note that keys containing spaces are not supported.
 
 - You can configure which properties are sent using 
 
 - Add experimental Sentry Android Distribution module for integrating with Sentry Build Distribution to check for and install updates (#4804)
 - Allow passing a different 
HandlertoSystemEventsBreadcrumbsIntegrationandAndroidConnectionStatusProviderso their callbacks are deliver to that handler (#4808) - Session Replay: Add new experimental Canvas Capture Strategy (#4777)
- A new screenshot capture strategy that uses Android's Canvas API for more accurate and reliable text and image masking
 - Any 
.drawText()or.drawBitmap()calls are replaced by rectangles, ensuring no text or images are present in the resulting output - Note: If this strategy is used, all text and images will be masked, regardless of any masking configuration
 - To enable this feature, set the 
screenshotStrategy, either via code:or AndroidManifest.xml:SentryAndroid.init(context) { options -> options.sessionReplay.screenshotStrategy = ScreenshotStrategyType.CANVAS }
<application> <meta-data android:name="io.sentry.session-replay.screenshot-strategy" android:value="canvas" /> </application>
 
 
Fixes
- Avoid StrictMode warnings (#4724)
 - Use logger from options for JVM profiler (#4771)
 - Session Replay: Avoid deadlock when pausing replay if no connection (#4788)
 - Session Replay: Fix capturing roots with no windows (#4805)
 - Session Replay: Fix 
java.lang.IllegalArgumentException: width and height must be > 0(#4805) - Handle 
NoOpScopesinContextwhen starting a span through OpenTelemetry (#4823)- This fixes "java.lang.IllegalArgumentException: The DSN is required" when combining WebFlux and OpenTelemetry
 
 - Session Replay: Do not use recycled screenshots for masking (#4790)
- This fixes native crashes seen in 
Canvas.<init>/ScreenshotRecorder.capture 
 - This fixes native crashes seen in 
 - Session Replay: Ensure bitmaps are recycled properly (#4820)
 
Miscellaneous
- Mark SentryClient(SentryOptions) constructor as not internal (#4787)
 
Dependencies
8.24.0-alpha.2
Features
- Attach MDC properties to logs as attributes (#4786)
- MDC properties set using supported logging frameworks (Logback, Log4j2, java.util.Logging) are now attached to structured logs as attributes.
 - The attribute reflected on the log is 
mdc.<key>, where<key>is the original key in the MDC. - This means that you will be able to filter/aggregate logs in the product based on these properties.
 - Only properties with keys matching the configured 
contextTagsare sent as log attributes.- You can configure which properties are sent using 
options.setContextTagsif initalizing manually, or by specifying a comma-separated list of keys with acontext-tagsentry insentry.propertiesorsentry.contex-tagsinapplication.properties. - Note that keys containing spaces are not supported.
 
 - You can configure which properties are sent using 
 
 - Add experimental Sentry Android Distribution module for integrating with Sentry Build Distribution to check for and install updates (#4804)
 - Allow passing a different 
HandlertoSystemEventsBreadcrumbsIntegrationandAndroidConnectionStatusProviderso their callbacks are deliver to that handler (#4808) 
Fixes
- Avoid StrictMode warnings (#4724)
 - Use logger from options for JVM profiler (#4771)
 - Session Replay: Avoid deadlock when pausing replay if no connection (#4788)
 
Miscellaneous
- Mark SentryClient(SentryOptions) constructor as not internal (#4787)
 
Dependencies
8.23.1-alpha.1
8.23.0
Features
- Add session replay id to Sentry Logs (#4740)
 - Add support for continuous profiling of JVM applications on macOS and Linux (#4556)
- Sentry continuous profiling on the JVM is using async-profiler under the hood.
 - By default this feature is disabled. Set a profile sample rate and chose a lifecycle (see below) to enable it.
 - Add the 
sentry-async-profilerdependency to your project - Set a sample rate for profiles, e.g. 
1.0to send all of them. You may useoptions.setProfileSessionSampleRate(1.0)in code orprofile-session-sample-rate=1.0insentry.properties - Set a profile lifecycle via 
options.setProfileLifecycle(ProfileLifecycle.TRACE)in code orprofile-lifecycle=TRACEinsentry.properties- By default the lifecycle is set to 
MANUAL, meaning you have to explicitly callSentry.startProfiler()andSentry.stopProfiler() - You may change it to 
TRACEwhich will create a profile for each transaction 
 - By default the lifecycle is set to 
 - To automatically upload Profiles for each transaction in a Spring Boot application
- set 
sentry.profile-session-sample-rate=1.0andsentry.profile-lifecycle=TRACEinapplication.properties - or set 
sentry.profile-session-sample-rate: 1.0andsentry.profile-lifecycle: TRACEinapplication.yml 
 - set 
 - Profiling can also be combined with our OpenTelemetry integration
 
 
Fixes
- Start performance collection on AppStart continuous profiling (#4752)
 - Preserve modifiers in 
SentryTraced(#4757) 
Improvements
8.22.0
Features
- Move SentryLogs out of experimental (#4710)
 - Add support for w3c traceparent header (#4671)
- This feature is disabled by default. If enabled, outgoing requests will include the w3c 
traceparentheader. - See https://develop.sentry.dev/sdk/telemetry/traces/distributed-tracing/#w3c-trace-context-header for more details.
 
Sentry(Android).init(context) { options -> // ... options.isPropagateTraceparent = true }
 - This feature is disabled by default. If enabled, outgoing requests will include the w3c 
 - Sentry now supports Spring Boot 4 M3 pre-release (#4739)
 
Improvements
- Remove internal API status from get/setDistinctId (#4708)
 - Remove ApiStatus.Experimental annotation from check-in API (#4721)
 
Fixes
- Session Replay: Fix 
NoSuchElementExceptioninBufferCaptureStrategy(#4717) - Session Replay: Fix continue recording in Session mode after Buffer is triggered (#4719)
 
Dependencies
8.21.1
8.21.0
Fixes
- Only set log template for logging integrations if formatted message differs from template (#4682)
 
Features
- Add support for Spring Boot 4 and Spring 7 (#4601)
- NOTE: Our 
sentry-opentelemetry-agentless-springis not working yet for Spring Boot 4. Please usesentry-opentelemetry-agentuntil OpenTelemetry has support for Spring Boot 4. 
 - NOTE: Our 
 - Replace 
UUIDGeneratorimplementation with Apache licensed code (#4662) - Replace 
Randomimplementation with MIT licensed code (#4664) - Add support for 
varsattribute inSentryStackFrame(#4686)- Breaking change: The type of the 
varsattribute has been changed fromMap<String, String>toMap<String, Object>. 
 - Breaking change: The type of the 
 
8.20.0
Fixes
- Do not use named capturing groups for regular expressions (#4652)
- This fixes a crash on Android versions below 8.0 (API level 26)
 
 
Features
- Add onDiscard to enable users to track the type and amount of data discarded before reaching Sentry (#4612)
- Stub for setting the callback on 
Sentry.init:Sentry.init(options -> { ... options.setOnDiscard( (reason, category, number) -> { // Your logic to process discarded data }); });
 
 - Stub for setting the callback on