Releases: getsentry/sentry-java
Releases · getsentry/sentry-java
8.0.0-rc.1
Features
- Extract OpenTelemetry
URL_PATHspan attribute into description (#3933) - Replace OpenTelemetry
ContextStoragewrapper withContextStorageProvider(#3938)- The wrapper had to be put in place before any call to
ContextwhereasContextStorageProvideris automatically invoked at the correct time.
- The wrapper had to be put in place before any call to
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 (Stable)
Fixes
- Fix testTag not working for Jetpack Compose user interaction tracking (#3878)
8.0.0-beta.3
Features
- Send
otel.kindto Sentry (#3907) - Allow passing
environmenttoCheckinUtils.withCheckIn(3889) - Changes up to
7.18.0have been merged and are now included as well
Fixes
- Mark
DiskFlushNotificationhint flushed when rate limited (#3892)- Our
UncaughtExceptionHandlerIntegrationwaited for the full flush timeout duration (default 15s) when rate limited.
- Our
- Do not replace
opwith auto generated content for OpenTelemetry spans with span kindINTERNAL(#3906)
Behavioural Changes
- Send file name and path only if isSendDefaultPii is true (#3919)
7.18.0 (Stable)
Features
- Android 15: Add support for 16KB page sizes (#3620)
- See https://developer.android.com/guide/practices/page-sizes for more details
- Session Replay: Add
beforeSendReplaycallback (#3855) - Session Replay: Add support for masking/unmasking view containers (#3881)
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
8.0.0-beta.2
Breaking Changes
- Use String instead of UUID for SessionId (#3834)
- The
Sessionconstructor now takes aStringinstead of aUUIDfor thesessionIdparameter. Session.getSessionId()now returns aStringinstead of aUUID.
- The
- The Android minSdk level for all Android modules is now 21 (#3852)
- The minSdk level for sentry-android-ndk changed from 19 to 21 (#3851)
- All status codes below 400 are now mapped to
SpanStatus.OK(#3869)
Features
- Spring Boot now automatically detects if OpenTelemetry is available and makes use of it (#3846)
- This is only enabled if there is no OpenTelemetry agent available
- We prefer to use the OpenTelemetry agent as it offers more auto instrumentation
- In some cases the OpenTelemetry agent cannot be used, please see https://opentelemetry.io/docs/zero-code/java/spring-boot-starter/ for more details on when to prefer the Agent and when the Spring Boot starter makes more sense.
- In this mode the SDK makes use of the
OpenTelemetrybean that is created byopentelemetry-spring-boot-starterinstead ofGlobalOpenTelemetry
- Spring Boot now automatically detects our OpenTelemetry agent if its auto init is disabled (#3848)
- This means Spring Boot config mechanisms can now be combined with our OpenTelemetry agent
- The
sentry-opentelemetry-extramodule has been removed again, most classes have been moved tosentry-opentelemetry-bootstrapwhich is loaded into the bootstrap classloader (i.e.null) when our Java agent is used. The rest has been moved intosentry-opentelemetry-agentcustomizationand is loaded into the agent classloader when our Java agent is used. - The
sentry-opentelemetry-bootstrapandsentry-opentelemetry-agentcustomizationmodules can be used without the agent as well, in which case all classes are loaded into the application classloader. Check out oursentry-samples-spring-boot-jakarta-opentelemetry-noagentsample. - In this mode the SDK makes use of
GlobalOpenTelemetry
- Automatically set span factory based on presence of OpenTelemetry (#3858)
SentrySpanFactoryHolderhas been removed as it is no longer required.
- Add
ignoredTransactionsoption to filter out transactions by name (#3871)- can be used via ENV vars, e.g.
SENTRY_IGNORED_TRANSACTIONS=POST /person/,GET /pers.* - can also be set in options directly, e.g.
options.setIgnoredTransactions(...) - can also be set in
sentry.properties, e.g.ignored-transactions=POST /person/,GET /pers.* - can also be set in Spring config
application.properties, e.g.sentry.ignored-transactions=POST /person/,GET /pers.*
- can be used via ENV vars, e.g.
- Add a sample for showcasing Sentry with OpenTelemetry for Spring Boot 3 with our Java agent (
sentry-samples-spring-boot-jakarta-opentelemetry) (#3856) - Add a sample for showcasing Sentry with OpenTelemetry for Spring Boot 3 without our Java agent (
sentry-samples-spring-boot-jakarta-opentelemetry-noagent) (#3856) - Add a sample for showcasing Sentry with OpenTelemetry (
sentry-samples-console-opentelemetry-noagent) (#3856) - Add
globalHubModeto options (#3805)globalHubModeused to only be a param onSentry.init. To make it easier to be used in e.g. Desktop environments, we now additionally added it as an option on SentryOptions that can also be set viasentry.properties.- If both the param on
Sentry.initand the option are set, the option will win. By default the option is set tonullmeaning whatever is passed toSentry.inittakes effect.
- Lazy uuid generation for SentryId and SpanId (#3770)
- Faster generation of Sentry and Span IDs (#3818)
- Uses faster implementation to convert UUID to SentryID String
- Uses faster Random implementation to generate UUIDs
- Android 15: Add support for 16KB page sizes (#3851)
- See https://developer.android.com/guide/practices/page-sizes for more details
Fixes
- The Sentry OpenTelemetry Java agent now makes sure Sentry
Scopesstorage is initialized even if the agents auto init is disabled (#3848)- This is required for all integrations to work together with our OpenTelemetry Java agent if its auto init has been disabled and the SDKs init should be used instead.
- Do not ignore certain span origins for OpenTelemetry without agent (#3856)
- Fix
startChildfor span that is not in current OpenTelemetryContext(#3862)- Starting a child span from a transaction that wasn't in the current
Contextlead to multiple transactions being created (one for the transaction and another per span created).
- Starting a child span from a transaction that wasn't in the current
- Add
auto.graphql.graphql22to ignored span origins when using OpenTelemetry (#3828) - The Spring Boot 3 WebFlux sample now uses our GraphQL v22 integration (#3828)
- All status codes below 400 are now mapped to
SpanStatus.OK(#3869)
Dependencies
Behavioural Changes
- (Android) Enable Performance V2 by default (#3824)
- With this change cold app start spans will include spans for ContentProviders, Application and Activity load.
7.17.0
Features
- Add meta option to set the maximum amount of breadcrumbs to be logged. (#3836)
- Use a separate
Randominstance per thread to improve SDK performance (#3835)
Fixes
- Using MaxBreadcrumb with value 0 no longer crashes. (#3836)
- Accept manifest integer values when requiring floating values (#3823)
- Fix standalone tomcat jndi issue (#3873)
- Using Sentry Spring Boot on a standalone tomcat caused the following error:
- Failed to bind properties under 'sentry.parsed-dsn' to io.sentry.Dsn
- Using Sentry Spring Boot on a standalone tomcat caused the following error:
7.17.0-alpha.1
Features
- Android 15: Add support for 16KB page sizes (#3620)
- See https://developer.android.com/guide/practices/page-sizes for more details
7.16.0 (Stable)
Features
- Add meta option to attach ANR thread dumps (#3791)
Fixes
- Cache parsed Dsn (#3796)
- fix invalid profiles when the transaction name is empty (#3747)
- Deprecate
enableTracingoption (#3777) - Vendor
java.util.Randomand replacejava.security.SecureRandomusages (#3783) - Fix potential ANRs due to NDK scope sync (#3754)
- Fix potential ANRs due to NDK System.loadLibrary calls (#3670)
- Fix slow
Logcalls on app startup (#3793) - Fix slow Integration name parsing (#3794)
- Session Replay: Reduce startup and capture overhead (#3799)
- Load lazy fields on init in the background (#3803)
- Replace setOf with HashSet.add (#3801)
Breaking changes
- The method
addIntegrationToSdkVersion(Ljava/lang/Class;)Vhas been removed from the core (io.sentry:sentry) package. Please make sure all of the packages (e.g.io.sentry:sentry-android-core,io.sentry:sentry-android-fragment,io.sentry:sentry-okhttpand others) are all aligned and using the same version to prevent theNoSuchMethodErrorexception.
7.16.0-alpha.1
Features
- Add meta option to attach ANR thread dumps (#3791)
Fixes
- Cache parsed Dsn (#3796)
- fix invalid profiles when the transaction name is empty (#3747)
- Deprecate
enableTracingoption (#3777) - Vendor
java.util.Randomand replacejava.security.SecureRandomusages (#3783) - Fix potential ANRs due to NDK scope sync (#3754)
- Fix potential ANRs due to NDK System.loadLibrary calls (#3670)
- Fix slow
Logcalls on app startup (#3793) - Fix slow Integration name parsing (#3794)
- Session Replay: Reduce startup and capture overhead (#3799)
8.0.0-beta.1
Breaking Changes
- Throw IllegalArgumentException when calling Sentry.init on Android (#3596)
- Metrics have been removed from the SDK (#3774)
- Metrics will return but we don't know in what exact form yet
enableTracingoption (a.k.aenable-tracing) has been removed from the SDK (#3776)- Please set
tracesSampleRateto a value >= 0.0 for enabling performance instead. The default value isnullwhich means performance is disabled.
- Please set
- Change OkHttp sub-spans to span attributes (#3556)
- This will reduce the number of spans created by the SDK
- Replace
synchronizedmethods and blocks withReentrantLock(AutoClosableReentrantLock) (#3715)- If you are subclassing any Sentry classes, please check if the parent class used
synchronizedbefore. Please make sure to use the same lock object as the parent class in that case.
- If you are subclassing any Sentry classes, please check if the parent class used
traceOriginsoption (io.sentry.traces.tracing-originsin manifest) has been removed, please usetracePropagationTargets(io.sentry.traces.trace-propagation-targetsin manifest`) instead (#3780)profilingEnabledoption (io.sentry.traces.profiling.enablein manifest) has been removed, please useprofilesSampleRate(io.sentry.traces.profiling.sample-rateinstead) instead (#3780)shutdownTimeoutoption has been removed, please useshutdownTimeoutMillisinstead (#3780)profilingTracesIntervalMillisoption for Android has been removed (#3780)io.sentry.session-tracking.enablemanifest option has been removed (#3780)Sentry.traceHeaders()method has been removed, please useSentry.getTraceparent()instead (#3718)Sentry.reportFullDisplayed()method has been removed, please useSentry.reportFullyDisplayed()instead (#3717)User.otherhas been removed, please usedatainstead (#3780)SdkVersion.getIntegrations()has been removed, please usegetIntegrationSetinstead (#3780)SdkVersion.getPackages()has been removed, please usegetPackageSet()instead (#3780)Device.languagehas been removed, please uselocaleinstead (#3780)TraceContext.userandTraceContextUserclass have been removed, please useuserIdonTraceContextinstead (#3780)TransactionContext.fromSentryTrace()has been removed, please useSentry.continueTrace()instead (#3780)SentryDataFetcherExceptionHandlerhas been removed, please useSentryGenericDataFetcherExceptionHandlerin combination withSentryInstrumentationinstead (#3780)- One of the
AndroidTransactionProfilerconstructors has been removed, please use a different one (#3780)
Features
- Add init priority settings (#3674)
- You may now set
forceInit=true(force-initfor.propertiesfiles) to ensure a call to Sentry.init / SentryAndroid.init takes effect
- You may now set
- Add force init option to Android Manifest (#3675)
- Use
<meta-data android:name="io.sentry.force-init" android:value="true" />to ensure Sentry Android auto init is not easily overwritten
- Use
- Attach request body for
application/x-www-form-urlencodedrequests in Spring (#3731)- Previously request body was only attached for
application/jsonrequests
- Previously request body was only attached for
- Set breadcrumb level based on http status (#3771)
- Support
graphql-javav22 via a new modulesentry-graphql-22(#3740)- If you are using
graphql-javav21 or earlier, you can use thesentry-graphqlmodule - For
graphql-javav22 and newer please use thesentry-graphql-22module
- If you are using
- We now provide a
SentryInstrumenterbean directly for Spring (Boot) if there is none yet instead of usingGraphQlSourceBuilderCustomizerto add the instrumentation (#3744)- It is now also possible to provide a bean of type
SentryGraphqlInstrumentation.BeforeSpanCallbackwhich is then used bySentryInstrumenter
- It is now also possible to provide a bean of type
- Emit transaction.data inside contexts.trace.data (#3735)
- Also does not emit
transaction.datainexrasanymore
- Also does not emit
Fixes
- Use OpenTelemetry span name as fallback for transaction name (#3557)
- In certain cases we were sending transactions as "" when using OpenTelemetry
- Add OpenTelemetry span data to Sentry span (#3593)
- No longer selectively copy OpenTelemetry attributes to Sentry spans / transactions
data(#3663) - Remove
PROCESS_COMMAND_ARGS(process.command_args) OpenTelemetry span attribute as it can be very large (#3664) - Use RECORD_ONLY sampling decision if performance is disabled (#3659)
- Also fix check whether Performance is enabled when making a sampling decision in the OpenTelemetry sampler
- Sentry OpenTelemetry Java Agent now sets Instrumenter to SENTRY (used to be OTEL) (#3697)
- Set span origin in
ActivityLifecycleIntegrationon span options instead of after creating the span / transaction (#3702)- This allows spans to be filtered by span origin on creation
- Honor ignored span origins in
SentryTracer.startChild(#3704) - Add
enable-spotlightandspotlight-connection-urlto external options and check if spotlight is enabled when deciding whether to inspect an OpenTelemetry span for connecting to splotlight (#3709) - Trace context on
Contexts.setTracehas been marked@NotNull(#3721)- Setting it to
nullwould cause an exception. - Transactions are dropped if trace context is missing
- Setting it to
- Remove internal annotation on
SpanOptions(#3722) SentryLogbackInitializeris now public (#3723)- Fix order of calling
closeon previous Sentry instance when re-initializing (#3750)- Previously some parts of Sentry were immediately closed after re-init that should have stayed open and some parts of the previous init were never closed
Behavioural Changes
- (Android) Replace thread id with kernel thread id in span data (#3706)
Dependencies
- Bump OpenTelemetry to 1.41.0, OpenTelemetry Java Agent to 2.7.0 and Semantic Conventions to 1.25.0 (#3668)