Skip to content

Native Image Build Fails after upgrading dd-trace-java from 1.40.0 to 1.41.0 #8011

@abdelmoez-guetat

Description

@abdelmoez-guetat

Description

I am attempting to build a native image for my Spring Boot application using GraalVM, but I am encountering initialization issues related to classes during the build time. These issues have arisen after upgrading Datadog's Java APM agent from version 1.40.0 to 1.41.0.

When building the native image, I receive the following error messages:

Classes that should be initialized at runtime were initialized during image building: - datadog.trace.api.Functions$PrefixJoin was unintentionally initialized at build time. To investigate further, use --trace-class-initialization=datadog.trace.api.Functions$PrefixJoin. - datadog.trace.bootstrap.instrumentation.decorator.BaseDecorator was unintentionally initialized at build time. To investigate further, use --trace-class-initialization=datadog.trace.bootstrap.instrumentation.decorator.BaseDecorator. - datadog.trace.bootstrap.instrumentation.decorator.AsyncResultDecorator was unintentionally initialized at build time. To investigate further, use --trace-class-initialization=datadog.trace.bootstrap.instrumentation.decorator.AsyncResultDecorator. 

The setup details are as follows:
Java Version: 17
Spring Boot Version: 3.3.5
GraalVM Version: 17.0.11

Maven Plugin Configuration:

I am using Maven to build the project, and the following is my plugin configuration in the pom.xml file:

 <plugin> <groupId>org.graalvm.buildtools</groupId> <artifactId>native-maven-plugin</artifactId> <configuration> <buildArgs> <buildArg>-J-javaagent:dd-java-agent.jar</buildArg> <buildArg> --initialize-at-build-time=org.slf4j.helpers,datadog.okhttp3.internal.platform,net.logstash.logback </buildArg> <buildArg>--initialize-at-run-time=net.logstash.logback.appender.LogstashTcpSocketAppender </buildArg> <buildArg>--link-at-build-time=net.logstash.logback.appender</buildArg> <buildArg>-H:+ReportExceptionStackTraces</buildArg> <buildArg>-H:+MultiThreaded</buildArg> <buildArg>-H:IncludeResources=.*\.xml</buildArg> </buildArgs> <imageName>${build.finalName}</imageName> </configuration> </plugin>

Additional Errors:

Error: Classes that should be initialized at run time got initialized during image building: datadog.trace.bootstrap.instrumentation.decorator.AsyncResultDecorator was unintentionally initialized at build time. org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService caused initialization of this class with the following trace: at datadog.trace.bootstrap.instrumentation.decorator.AsyncResultDecorator.<clinit>(AsyncResultDecorator.java:19) at datadog.trace.instrumentation.reactor.core.ReactorAsyncResultSupportExtension.<clinit>(ReactorAsyncResultSupportExtension.java:11) at reactor.core.publisher.MonoJust.<init>(MonoJust.java:36) at reactor.core.publisher.Mono.just(Mono.java:754) at org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService.<clinit>(HandshakeWebSocketService.java:72) datadog.trace.api.Functions$PrefixJoin was unintentionally initialized at build time. org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService caused initialization of this class with the following trace: at datadog.trace.api.Functions$PrefixJoin.<clinit>(Functions.java:102) at datadog.trace.bootstrap.instrumentation.decorator.BaseDecorator.<clinit>(BaseDecorator.java:37) at datadog.trace.instrumentation.reactor.core.ReactorAsyncResultSupportExtension.<clinit>(ReactorAsyncResultSupportExtension.java:11) at reactor.core.publisher.MonoJust.<init>(MonoJust.java:36) at reactor.core.publisher.Mono.just(Mono.java:754) at org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService.<clinit>(HandshakeWebSocketService.java:72) datadog.trace.bootstrap.instrumentation.decorator.BaseDecorator was unintentionally initialized at build time. org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService caused initialization of this class with the following trace: at datadog.trace.bootstrap.instrumentation.decorator.BaseDecorator.<clinit>(BaseDecorator.java:23) at datadog.trace.instrumentation.reactor.core.ReactorAsyncResultSupportExtension.<clinit>(ReactorAsyncResultSupportExtension.java:11) at reactor.core.publisher.MonoJust.<init>(MonoJust.java:36) at reactor.core.publisher.Mono.just(Mono.java:754) at org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService.<clinit>(HandshakeWebSocketService.java:72) com.oracle.svm.core.util.UserError$UserException: Classes that should be initialized at run time got initialized during image building: datadog.trace.bootstrap.instrumentation.decorator.AsyncResultDecorator was unintentionally initialized at build time. org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService caused initialization of this class with the following trace: at datadog.trace.bootstrap.instrumentation.decorator.AsyncResultDecorator.<clinit>(AsyncResultDecorator.java:19) at datadog.trace.instrumentation.reactor.core.ReactorAsyncResultSupportExtension.<clinit>(ReactorAsyncResultSupportExtension.java:11) at reactor.core.publisher.MonoJust.<init>(MonoJust.java:36) at reactor.core.publisher.Mono.just(Mono.java:754) at org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService.<clinit>(HandshakeWebSocketService.java:72) datadog.trace.api.Functions$PrefixJoin was unintentionally initialized at build time. org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService caused initialization of this class with the following trace: at datadog.trace.api.Functions$PrefixJoin.<clinit>(Functions.java:102) at datadog.trace.bootstrap.instrumentation.decorator.BaseDecorator.<clinit>(BaseDecorator.java:37) at datadog.trace.instrumentation.reactor.core.ReactorAsyncResultSupportExtension.<clinit>(ReactorAsyncResultSupportExtension.java:11) at reactor.core.publisher.MonoJust.<init>(MonoJust.java:36) at reactor.core.publisher.Mono.just(Mono.java:754) at org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService.<clinit>(HandshakeWebSocketService.java:72) datadog.trace.bootstrap.instrumentation.decorator.BaseDecorator was unintentionally initialized at build time. org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService caused initialization of this class with the following trace: at datadog.trace.bootstrap.instrumentation.decorator.BaseDecorator.<clinit>(BaseDecorator.java:23) at datadog.trace.instrumentation.reactor.core.ReactorAsyncResultSupportExtension.<clinit>(ReactorAsyncResultSupportExtension.java:11) at reactor.core.publisher.MonoJust.<init>(MonoJust.java:36) at reactor.core.publisher.Mono.just(Mono.java:754) at org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService.<clinit>(HandshakeWebSocketService.java:72) 

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions