Skip to content

Releases: getsentry/sentry-java

8.0.0-rc.4

09 Jan 16:22
Compare
Choose a tag to compare
8.0.0-rc.4 Pre-release
Pre-release

Features

  • Enable ThreadLocalAccessor for Spring Boot 3 WebFlux by default (#4023)

Internal

  • Warm starts cleanup (#3954)

Dependencies

7.20.0

02 Jan 19:35
Compare
Choose a tag to compare

Features

  • Session Replay GA (#4017)

To enable Replay use the sessionReplay.sessionSampleRate or sessionReplay.onErrorSampleRate options.

import io.sentry.SentryReplayOptions
import io.sentry.android.core.SentryAndroid

SentryAndroid.init(context) { options ->
 
  options.sessionReplay.sessionSampleRate = 1.0
  options.sessionReplay.onErrorSampleRate = 1.0

  // To change default redaction behavior (defaults to true)
  options.sessionReplay.redactAllImages = true
  options.sessionReplay.redactAllText = true

  // To change quality of the recording (defaults to MEDIUM)
  options.sessionReplay.quality = SentryReplayOptions.SentryReplayQuality.MEDIUM // (LOW|MEDIUM|HIGH)
}

To learn more about Session Replay, visit the documentation page: https://docs.sentry.io/platforms/android/session-replay/

Fixes

  • Fix warm start detection (#3937)
  • Session Replay: Reduce memory allocations, disk space consumption, and payload size (#4016)
  • Session Replay: Do not try to encode corrupted frames multiple times (#4016)

Internal

  • Session Replay: Allow overriding SdkVersion for replay events (#4014)
  • Session Replay: Send replay options as tags (#4015)

Breaking changes

  • Session Replay options were moved from under experimental to the main options object (#4017)

7.19.1

23 Dec 13:10
Compare
Choose a tag to compare

Fixes

  • Change TTFD timeout to 25 seconds (#3984)
  • Session Replay: Fix memory leak when masking Compose screens (#3985)
  • Session Replay: Fix potential ANRs in GestureRecorder (#4001)

Internal

  • Session Replay: Flutter improvements (#4007)

8.0.0-rc.3

20 Dec 14:35
Compare
Choose a tag to compare
8.0.0-rc.3 Pre-release
Pre-release

Features

  • Add sentry-opentelemetry-agentless-spring module (#4000)
    • This module can be added as a dependency when using Sentry with OpenTelemetry and Spring Boot but don't want to use our Agent. It takes care of configuring OpenTelemetry for use with Sentry.
    • You may want to set OTEL_LOGS_EXPORTER=none;OTEL_METRICS_EXPORTER=none;OTEL_TRACES_EXPORTER=none env vars to not have the log flooded with error messages regarding OpenTelemetry features we don't use.
  • Add sentry-opentelemetry-agentless module (#3961)
    • This module can be added as a dependency when using Sentry with OpenTelemetry but don't want to use our Agent. It takes care of configuring OpenTelemetry for use with Sentry.
    • To enable the auto configuration of it, please set -Dotel.java.global-autoconfigure.enabled=true on the java command, when starting your application.
    • You may also want to set OTEL_LOGS_EXPORTER=none;OTEL_METRICS_EXPORTER=none;OTEL_TRACES_EXPORTER=none env vars to not have the log flooded with error messages regarding OpenTelemetry features we don't use.
  • OpenTelemetryUtil.applyOpenTelemetryOptions now takes an enum instead of a boolean for its mode
  • Add openTelemetryMode option (#3994)
    • It defaults to AUTO meaning the SDK will figure out how to best configure itself for use with OpenTelemetry
    • Use of OpenTelemetry can also be disabled completely by setting it to OFF (#3995)
      • In this case even if OpenTelemetry is present, the Sentry SDK will not use it
    • Use AGENT when using sentry-opentelemetry-agent
    • Use AGENTLESS when using sentry-opentelemetry-agentless
    • Use AGENTLESS_SPRING when using sentry-opentelemetry-agentless-spring
  • Add scopeBindingMode to SpanOptions (#4004)
    • This setting only affects the SDK when used with OpenTelemetry.
    • Defaults to AUTO meaning the SDK will decide whether the span should be bound to the current scope. It will not bind transactions to scope using AUTO, it will only bind spans where the parent span is on the current scope.
    • ON sets the new span on the current scope.
    • OFF does not set the new span on the scope.

Fixes

  • Replace deprecated SimpleInstrumentation with SimplePerformantInstrumentation for graphql 22 (#3974)
  • Cache requests for Spring using Springs ContentCachingRequestWrapper instead of our own Wrapper to also cache parameters (#3641)
    • Previously only the body was cached which could lead to problems in the FilterChain as Request parameters were not available
  • We now hold a strong reference to the underlying OpenTelemetry span when it is created through Sentry API (#3997)
    • This keeps it from being garbage collected too early
  • Close backpressure monitor on SDK shutdown (#3998)
    • Due to the backpressure monitor rescheduling a task to run every 10s, it very likely caused shutdown to wait the full shutdownTimeoutMillis (defaulting to 2s) instead of being able to terminate immediately
  • Improve ignored check performance (#3992)
    • Checking if a span origin, a transaction or a checkIn should be ignored is now faster

7.19.0

12 Dec 10:01
Compare
Choose a tag to compare

Fixes

  • Session Replay: fix various crashes and issues (#3970)
    • Fix IndexOutOfBoundsException when tracking window changes
    • Fix IllegalStateException when adding/removing draw listener for a dead view
    • Fix ConcurrentModificationException when registering window listeners and stopping WindowRecorder/GestureRecorder
  • Add support for setting sentry-native handler_strategy (#3671)

Dependencies

8.0.0-rc.2

05 Dec 10:28
Compare
Choose a tag to compare
8.0.0-rc.2 Pre-release
Pre-release

Fixes

  • Fix incoming defer sampling decision sentry-trace header (#3942)
    • A sentry-trace header that only contains trace ID and span ID but no sampled flag (-1, -0 suffix) means the receiving system can make its own sampling decision
    • When generating sentry-trace header from PropagationContext we now copy the sampled flag.
    • In TransactionContext.fromPropagationContext when there is no parent sampling decision, keep the decision null so a new sampling decision is made instead of defaulting to false
  • Defer sampling decision by setting sampled to null in PropagationContext when using OpenTelemetry in case of an incoming defer sampling sentry-trace header. (#3945)
  • Build PropagationContext from SamplingDecision made by SentrySampler instead of parsing headers and potentially ignoring a sampling decision in case a sentry-trace header comes in with deferred sampling decision. (#3947)
  • Let OpenTelemetry handle extracting and injecting tracing information (#3953)
    • Our integrations no longer call .continueTrace and also do not inject tracing headers if the integration has been added to ignoredSpanOrigins
  • Changes up to 7.18.1 have been merged and are now included as well

8.0.0-rc.1

29 Nov 12:55
Compare
Choose a tag to compare
8.0.0-rc.1 Pre-release
Pre-release

Features

  • Extract OpenTelemetry URL_PATH span attribute into description (#3933)
  • Replace OpenTelemetry ContextStorage wrapper with ContextStorageProvider (#3938)
    • The wrapper had to be put in place before any call to Context whereas ContextStorageProvider is automatically invoked at the correct time.

Dependencies

  • Bump OpenTelemetry to 1.44.1, OpenTelemetry Java Agent to 2.10.0 and Semantic Conventions to 1.28.0 (#3935)

7.18.1

29 Nov 09:44
Compare
Choose a tag to compare

Fixes

  • Fix testTag not working for Jetpack Compose user interaction tracking (#3878)

8.0.0-beta.3

22 Nov 09:34
Compare
Choose a tag to compare
8.0.0-beta.3 Pre-release
Pre-release

Features

  • Send otel.kind to Sentry (#3907)
  • Allow passing environment to CheckinUtils.withCheckIn (3889)
  • Changes up to 7.18.0 have been merged and are now included as well

Fixes

  • Mark DiskFlushNotification hint flushed when rate limited (#3892)
    • Our UncaughtExceptionHandlerIntegration waited for the full flush timeout duration (default 15s) when rate limited.
  • Do not replace op with auto generated content for OpenTelemetry spans with span kind INTERNAL (#3906)

Behavioural Changes

  • Send file name and path only if isSendDefaultPii is true (#3919)

7.18.0

18 Nov 15:52
Compare
Choose a tag to compare

Features

Fixes

  • Avoid collecting normal frames (#3782)
  • Ensure android initialization process continues even if options configuration block throws an exception (#3887)
  • Do not report parsing ANR error when there are no threads (#3888)
    • This should significantly reduce the number of events with message "Sentry Android SDK failed to parse system thread dump..." reported
  • Session Replay: Disable replay in session mode when rate limit is active (#3854)

Dependencies