Skip to content

Commit 305c6a6

Browse files
committed
Merge branch 'main' into fix/ui-profiling-send-first
2 parents 348aacc + 0a72b67 commit 305c6a6

94 files changed

Lines changed: 1172 additions & 688 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/generate-javadocs.yml

Lines changed: 0 additions & 34 deletions
This file was deleted.

CHANGELOG.md

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,55 @@
11
# Changelog
22

3-
## Unreleased
3+
## 8.13.2
4+
5+
### Fixes
6+
7+
- Don't apply Spring Boot plugin in `sentry-spring-boot-jakarta` ([#4456](https://github.com/getsentry/sentry-java/pull/4456))
8+
- The jar for `io.sentry:sentry-spring-boot-jakarta` is now correctly being built and published to Maven Central.
9+
10+
## 8.13.1
11+
12+
### Fixes
13+
14+
- Fix `SentryAndroid.init` crash if SDK is initialized from a background thread while an `Activity` is in resumed state ([#4449](https://github.com/getsentry/sentry-java/pull/4449))
15+
16+
### Dependencies
17+
18+
- Bump Gradle from v8.14 to v8.14.1 ([#4437](https://github.com/getsentry/sentry-java/pull/4437))
19+
- [changelog](https://github.com/gradle/gradle/blob/master/CHANGELOG.md#v8141)
20+
- [diff](https://github.com/gradle/gradle/compare/v8.14...v8.14.1)
21+
22+
## 8.13.0
423

524
### Features
625

726
- Add debug mode for Session Replay masking ([#4357](https://github.com/getsentry/sentry-java/pull/4357))
827
- Use `Sentry.replay().enableDebugMaskingOverlay()` to overlay the screen with the Session Replay masks.
928
- The masks will be invalidated at most once per `frameRate` (default 1 fps).
29+
- Extend Logs API to allow passing in `attributes` ([#4402](https://github.com/getsentry/sentry-java/pull/4402))
30+
- `Sentry.logger.log` now takes a `SentryLogParameters`
31+
- Use `SentryLogParameters.create(SentryAttributes.of(...))` to pass attributes
32+
- Attribute values may be of type `string`, `boolean`, `integer` or `double`.
33+
- Other types will be converted to `string`. Currently we simply call `toString()` but we might offer more in the future.
34+
- You may manually flatten complex types into multiple separate attributes of simple types.
35+
- e.g. intead of `SentryAttribute.named("point", Point(10, 20))` you may store it as `SentryAttribute.integerAttribute("point.x", point.x)` and `SentryAttribute.integerAttribute("point.y", point.y)`
36+
- `SentryAttribute.named()` will automatically infer the type or fall back to `string`.
37+
- `SentryAttribute.booleanAttribute()` takes a `Boolean` value
38+
- `SentryAttribute.integerAttribute()` takes a `Integer` value
39+
- `SentryAttribute.doubleAttribute()` takes a `Double` value
40+
- `SentryAttribute.stringAttribute()` takes a `String` value
41+
- We opted for handling parameters via `SentryLogParameters` to avoid creating tons of overloads that are ambiguous.
42+
43+
### Fixes
44+
45+
- Isolation scope is now forked in `OtelSentrySpanProcessor` instead of `OtelSentryPropagator` ([#4434](https://github.com/getsentry/sentry-java/pull/4434))
46+
- Since propagator may never be invoked we moved the location where isolation scope is forked.
47+
- Not invoking `OtelSentryPropagator.extract` or having a `sentry-trace` header that failed to parse would cause isolation scope not to be forked.
48+
- This in turn caused data to bleed between scopes, e.g. from one request into another
49+
50+
### Dependencies
51+
52+
- Bump Spring Boot to `3.5.0` ([#4111](https://github.com/getsentry/sentry-java/pull/4111))
1053

1154
### Fixes
1255

Makefile

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
.PHONY: all clean compile javadocs dryRelease update stop checkFormat format api assembleBenchmarkTestRelease assembleUiTestRelease assembleUiTestCriticalRelease createCoverageReports runUiTestCritical check preMerge publish
1+
.PHONY: all clean compile dryRelease update stop checkFormat format api assembleBenchmarkTestRelease assembleUiTestRelease assembleUiTestCriticalRelease createCoverageReports runUiTestCritical check preMerge publish
22

3-
all: stop clean javadocs compile createCoverageReports
3+
all: stop clean compile createCoverageReports
44
assembleBenchmarks: assembleBenchmarkTestRelease
55
assembleUiTests: assembleUiTestRelease
66
preMerge: check createCoverageReports
@@ -15,12 +15,9 @@ clean:
1515
compile:
1616
./gradlew build
1717

18-
javadocs:
19-
./gradlew aggregateJavadocs
20-
2118
# do a dry release (like a local deploy)
2219
dryRelease:
23-
./gradlew aggregateJavadocs distZip --no-build-cache --no-configuration-cache
20+
./gradlew distZip --no-build-cache --no-configuration-cache
2421

2522
# check for dependencies update
2623
update:

build.gradle.kts

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -246,31 +246,6 @@ spotless {
246246
}
247247
}
248248

249-
tasks.register("aggregateJavadocs", Javadoc::class.java) {
250-
setDestinationDir(project.layout.buildDirectory.file("docs/javadoc").get().asFile)
251-
title = "${project.name} $version API"
252-
val opts = options as StandardJavadocDocletOptions
253-
opts.quiet()
254-
opts.encoding = "UTF-8"
255-
opts.memberLevel = JavadocMemberLevel.PROTECTED
256-
opts.stylesheetFile(file("$projectDir/docs/stylesheet.css"))
257-
opts.links = listOf(
258-
"https://docs.oracle.com/javase/8/docs/api/",
259-
"https://docs.spring.io/spring-framework/docs/current/javadoc-api/",
260-
"https://docs.spring.io/spring-boot/docs/current/api/"
261-
)
262-
subprojects
263-
.filter { !it.name.contains("sample") && !it.name.contains("integration-tests") }
264-
.forEach { proj ->
265-
proj.tasks.withType<Javadoc>().forEach { javadocTask ->
266-
source += javadocTask.source
267-
classpath += javadocTask.classpath
268-
excludes += javadocTask.excludes
269-
includes += javadocTask.includes
270-
}
271-
}
272-
}
273-
274249
tasks.register("buildForCodeQL") {
275250
subprojects
276251
.filter {

buildSrc/src/main/java/Config.kt

Lines changed: 2 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,17 @@ object Config {
66
val kotlinStdLib = "stdlib-jdk8"
77

88
val springBootVersion = "2.7.18"
9-
val springBoot3Version = "3.4.2"
9+
val springBoot3Version = "3.5.0"
1010
val kotlinCompatibleLanguageVersion = "1.6"
1111

1212
val androidComposeCompilerVersion = "1.5.14"
1313

1414
object BuildPlugins {
1515
val androidGradle = "com.android.tools.build:gradle:$AGP"
16-
val gretty = "org.gretty"
17-
val grettyVersion = "4.0.0"
1816
val commonsCompressOverride = "org.apache.commons:commons-compress:1.25.0"
1917
}
2018

2119
object Android {
22-
private val sdkVersion = 34
23-
24-
val minSdkVersion = 21
25-
val targetSdkVersion = sdkVersion
26-
val compileSdkVersion = sdkVersion
27-
2820
val abiFilters = listOf("x86", "armeabi-v7a", "x86_64", "arm64-v8a")
2921

3022
fun shouldSkipDebugVariant(name: String?): Boolean {
@@ -43,7 +35,6 @@ object Config {
4335
private val lifecycleVersion = "2.2.0"
4436
val lifecycleProcess = "androidx.lifecycle:lifecycle-process:$lifecycleVersion"
4537
val lifecycleCommonJava8 = "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion"
46-
val androidxCore = "androidx.core:core:1.3.2"
4738
val androidxSqlite = "androidx.sqlite:sqlite:2.3.1"
4839
val androidxRecylerView = "androidx.recyclerview:recyclerview:1.2.1"
4940
val androidxAnnotation = "androidx.annotation:annotation:1.9.1"
@@ -62,31 +53,6 @@ object Config {
6253
val jacksonDatabind = "com.fasterxml.jackson.core:jackson-databind:2.18.3"
6354
val jacksonKotlin = "com.fasterxml.jackson.module:jackson-module-kotlin:2.18.3"
6455

65-
val springBootStarter = "org.springframework.boot:spring-boot-starter:$springBootVersion"
66-
val springBootStarterGraphql = "org.springframework.boot:spring-boot-starter-graphql:$springBootVersion"
67-
val springBootStarterQuartz = "org.springframework.boot:spring-boot-starter-quartz:$springBootVersion"
68-
val springBootStarterTest = "org.springframework.boot:spring-boot-starter-test:$springBootVersion"
69-
val springBootStarterWeb = "org.springframework.boot:spring-boot-starter-web:$springBootVersion"
70-
val springBootStarterWebsocket = "org.springframework.boot:spring-boot-starter-websocket:$springBootVersion"
71-
val springBootStarterWebflux = "org.springframework.boot:spring-boot-starter-webflux:$springBootVersion"
72-
val springBootStarterAop = "org.springframework.boot:spring-boot-starter-aop:$springBootVersion"
73-
val springBootStarterSecurity = "org.springframework.boot:spring-boot-starter-security:$springBootVersion"
74-
val springBootStarterJdbc = "org.springframework.boot:spring-boot-starter-jdbc:$springBootVersion"
75-
val springBootStarterActuator = "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion"
76-
77-
val springBoot3Starter = "org.springframework.boot:spring-boot-starter:$springBoot3Version"
78-
val springBoot3StarterGraphql = "org.springframework.boot:spring-boot-starter-graphql:$springBoot3Version"
79-
val springBoot3StarterQuartz = "org.springframework.boot:spring-boot-starter-quartz:$springBoot3Version"
80-
val springBoot3StarterTest = "org.springframework.boot:spring-boot-starter-test:$springBoot3Version"
81-
val springBoot3StarterWeb = "org.springframework.boot:spring-boot-starter-web:$springBoot3Version"
82-
val springBoot3StarterWebsocket = "org.springframework.boot:spring-boot-starter-websocket:$springBoot3Version"
83-
val springBoot3StarterWebflux = "org.springframework.boot:spring-boot-starter-webflux:$springBoot3Version"
84-
val springBoot3StarterAop = "org.springframework.boot:spring-boot-starter-aop:$springBoot3Version"
85-
val springBoot3StarterSecurity = "org.springframework.boot:spring-boot-starter-security:$springBoot3Version"
86-
val springBoot3StarterJdbc = "org.springframework.boot:spring-boot-starter-jdbc:$springBoot3Version"
87-
val springBoot3StarterActuator = "org.springframework.boot:spring-boot-starter-actuator:$springBoot3Version"
88-
val springBoot3StarterOpenTelemetry = "io.opentelemetry.instrumentation:opentelemetry-spring-boot-starter:${OpenTelemetry.otelInstrumentationVersion}"
89-
9056
val springWeb = "org.springframework:spring-webmvc"
9157
val springWebflux = "org.springframework:spring-webflux"
9258
val springSecurityWeb = "org.springframework.security:spring-security-web"
@@ -124,88 +90,26 @@ object Config {
12490

12591
val graphQlJava = "com.graphql-java:graphql-java:17.3"
12692
val graphQlJava22 = "com.graphql-java:graphql-java:22.1"
93+
val graphQlJavaNew = "com.graphql-java:graphql-java:24.0"
12794

12895
val quartz = "org.quartz-scheduler:quartz:2.3.0"
12996

13097
val kotlinReflect = "org.jetbrains.kotlin:kotlin-reflect"
13198
val kotlinStdLib = "org.jetbrains.kotlin:kotlin-stdlib"
13299

133-
private val navigationVersion = "2.4.2"
134-
val navigationRuntime = "androidx.navigation:navigation-runtime:$navigationVersion"
135-
136-
// compose deps
137-
val composeNavigation = "androidx.navigation:navigation-compose:$navigationVersion"
138-
val composeActivity = "androidx.activity:activity-compose:1.8.2"
139-
val composeFoundation = "androidx.compose.foundation:foundation:1.6.3"
140-
val composeUi = "androidx.compose.ui:ui:1.6.3"
141-
val composeFoundationLayout = "androidx.compose.foundation:foundation-layout:1.6.3"
142-
val composeMaterial = "androidx.compose.material3:material3:1.2.1"
143-
144-
val composeUiReplay = "androidx.compose.ui:ui:1.5.0" // Note: don't change without testing forwards compatibility
145-
val composeCoil = "io.coil-kt:coil-compose:2.6.0"
146-
147100
val apolloKotlin = "com.apollographql.apollo3:apollo-runtime:3.8.2"
148101
val apolloKotlin4 = "com.apollographql.apollo:apollo-runtime:4.1.1"
149102

150103
val sentryNativeNdk = "io.sentry:sentry-native-ndk:0.8.4"
151-
152-
object OpenTelemetry {
153-
val otelVersion = "1.44.1"
154-
val otelAlphaVersion = "$otelVersion-alpha"
155-
val otelInstrumentationVersion = "2.10.0"
156-
val otelInstrumentationAlphaVersion = "$otelInstrumentationVersion-alpha"
157-
val otelSemanticConvetionsVersion = "1.28.0-alpha" // check https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/dependencyManagement/build.gradle.kts#L49 for release version above to find a compatible version
158-
159-
val otelSdk = "io.opentelemetry:opentelemetry-sdk:$otelVersion"
160-
val otelSemconv = "io.opentelemetry.semconv:opentelemetry-semconv:$otelSemanticConvetionsVersion"
161-
val otelSemconvIncubating = "io.opentelemetry.semconv:opentelemetry-semconv-incubating:$otelSemanticConvetionsVersion"
162-
val otelJavaAgent = "io.opentelemetry.javaagent:opentelemetry-javaagent:$otelInstrumentationVersion"
163-
val otelJavaAgentExtensionApi = "io.opentelemetry.javaagent:opentelemetry-javaagent-extension-api:$otelInstrumentationAlphaVersion"
164-
val otelJavaAgentTooling = "io.opentelemetry.javaagent:opentelemetry-javaagent-tooling:$otelInstrumentationAlphaVersion"
165-
val otelExtensionAutoconfigureSpi = "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:$otelVersion"
166-
val otelExtensionAutoconfigure = "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:$otelVersion"
167-
val otelInstrumentationBom = "io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom:$otelInstrumentationVersion"
168-
}
169104
}
170105

171106
object AnnotationProcessors {
172107
val springBootAutoConfigure = "org.springframework.boot:spring-boot-autoconfigure-processor"
173108
val springBootConfiguration = "org.springframework.boot:spring-boot-configuration-processor"
174109
}
175110

176-
object TestLibs {
177-
private val espressoVersion = "3.5.0"
178-
179-
val androidJUnitRunner = "androidx.test.runner.AndroidJUnitRunner"
180-
val androidxCore = "androidx.test:core:1.6.1"
181-
val androidxRunner = "androidx.test:runner:1.6.2"
182-
val androidxTestCoreKtx = "androidx.test:core-ktx:1.6.1"
183-
val androidxTestRules = "androidx.test:rules:1.6.1"
184-
val espressoCore = "androidx.test.espresso:espresso-core:$espressoVersion"
185-
val espressoIdlingResource = "androidx.test.espresso:espresso-idling-resource:$espressoVersion"
186-
val androidxTestOrchestrator = "androidx.test:orchestrator:1.5.0"
187-
val androidxJunit = "androidx.test.ext:junit:1.1.5"
188-
val androidxCoreKtx = "androidx.core:core-ktx:1.7.0"
189-
val robolectric = "org.robolectric:robolectric:4.14"
190-
val mockitoKotlin = "org.mockito.kotlin:mockito-kotlin:4.1.0"
191-
val mockitoInline = "org.mockito:mockito-inline:4.8.0"
192-
val awaitility = "org.awaitility:awaitility-kotlin:4.1.1"
193-
val awaitility3 = "org.awaitility:awaitility-kotlin:3.1.6" // need this due to a conflict of awaitility4+ and espresso on hamcrest
194-
val mockWebserver = "com.squareup.okhttp3:mockwebserver:${Libs.okHttpVersion}"
195-
val jsonUnit = "net.javacrumbs.json-unit:json-unit:2.32.0"
196-
val hsqldb = "org.hsqldb:hsqldb:2.6.1"
197-
val javaFaker = "com.github.javafaker:javafaker:1.0.2"
198-
val msgpack = "org.msgpack:msgpack-core:0.9.8"
199-
val leakCanaryInstrumentation = "com.squareup.leakcanary:leakcanary-android-instrumentation:2.14"
200-
val composeUiTestJunit4 = "androidx.compose.ui:ui-test-junit4:1.6.8"
201-
val okio = "com.squareup.okio:okio:1.13.0"
202-
val coroutinesTest = "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1"
203-
}
204-
205111
object QualityPlugins {
206112
object Jacoco {
207-
val version = "0.8.7"
208-
209113
// TODO [POTEL] add tests and restore
210114
val minimumCoverage = BigDecimal.valueOf(0.1)
211115
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ org.gradle.workers.max=2
1414
android.useAndroidX=true
1515

1616
# Release information
17-
versionName=8.12.0
17+
versionName=8.13.2
1818

1919
# Override the SDK name on native crashes on Android
2020
sentryAndroidSdkName=sentry.native.android

0 commit comments

Comments
 (0)