From 21f927bd8f38affd3912cc78621f318530330003 Mon Sep 17 00:00:00 2001 From: Lukas Bloder Date: Tue, 5 Sep 2023 12:36:03 +0200 Subject: [PATCH 1/3] add property to disable AOP related features that break graalvm build --- .../src/main/resources/application.properties | 5 +++++ .../sentry/spring/boot/jakarta/SentryAutoConfiguration.java | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/sentry-samples/sentry-samples-spring-boot-jakarta/src/main/resources/application.properties b/sentry-samples/sentry-samples-spring-boot-jakarta/src/main/resources/application.properties index 8151eacc6cf..75f030786c8 100644 --- a/sentry-samples/sentry-samples-spring-boot-jakarta/src/main/resources/application.properties +++ b/sentry-samples/sentry-samples-spring-boot-jakarta/src/main/resources/application.properties @@ -13,6 +13,11 @@ sentry.enable-tracing=true sentry.debug=true in-app-includes="io.sentry.samples" +# Uncomment and set to true to enable aot compatibility +# This is disables all AOP related features (i.e. @SentryTransaction, @SentrySpan) +# to successfully compile to GraalVM +# sentry.enable-aot-compatibility=false + # Database configuration spring.datasource.url=jdbc:p6spy:hsqldb:mem:testdb spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver diff --git a/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryAutoConfiguration.java b/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryAutoConfiguration.java index 3ca17f75b4e..d3b071c1e8a 100644 --- a/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryAutoConfiguration.java +++ b/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryAutoConfiguration.java @@ -273,6 +273,10 @@ public FilterRegistrationBean sentryTracingFilter( } @Configuration(proxyBeanMethods = false) + @ConditionalOnProperty( + value = "sentry.enable-aot-compatibility", + havingValue = "false", + matchIfMissing = true) @Conditional(SentryTracingCondition.class) @ConditionalOnClass(ProceedingJoinPoint.class) @Import(SentryAdviceConfiguration.class) From 1a77ca4b3a2569aa0b8eeae991e9cb0c7363c356 Mon Sep 17 00:00:00 2001 From: Lukas Bloder Date: Tue, 5 Sep 2023 14:58:46 +0200 Subject: [PATCH 2/3] add changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7427a063c28..d7f336c81d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ - Send `http.request.method` in span data ([#2896](https://github.com/getsentry/sentry-java/pull/2896)) - Add `enablePrettySerializationOutput` option for opting out of pretty print ([#2871](https://github.com/getsentry/sentry-java/pull/2871)) +### Fixes + +- Add `sentry.enable-aot-compatibility` property to SpringBoot Jakarta `SentryAutoConfiguration` to enable building for GraalVM ([#2915](https://github.com/getsentry/sentry-java/pull/2915)) + ## 6.28.0 ### Features From ac9de10e5af92cbd54c9cfdf4a93d313936fa908 Mon Sep 17 00:00:00 2001 From: Lukas Bloder Date: Wed, 6 Sep 2023 11:23:27 +0200 Subject: [PATCH 3/3] add enableAotCompatibility flag to SentryProperties --- .../sentry/spring/boot/jakarta/SentryProperties.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryProperties.java b/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryProperties.java index 6b263a3303f..56535b5b184 100644 --- a/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryProperties.java +++ b/sentry-spring-boot-jakarta/src/main/java/io/sentry/spring/boot/jakarta/SentryProperties.java @@ -33,6 +33,8 @@ public class SentryProperties extends SentryOptions { /** Reactive framework (e.g. WebFlux) integration properties */ private @NotNull Reactive reactive = new Reactive(); + private boolean enableAotCompatibility = false; + public boolean isUseGitCommitIdAsRelease() { return useGitCommitIdAsRelease; } @@ -85,6 +87,14 @@ public void setReactive(@NotNull Reactive reactive) { this.reactive = reactive; } + public boolean isEnableAotCompatibility() { + return enableAotCompatibility; + } + + public void setEnableAotCompatibility(boolean enableAotCompatibility) { + this.enableAotCompatibility = enableAotCompatibility; + } + @Open public static class Logging { /** Enable/Disable logging auto-configuration. */