GoogleCloudPlatform / GoogleCloudPlatform/spring-cloud-gcp

Spring Boot 3.2.1 or later: Reenable pubsub-stream-sample NativeTests

Open
#2,456 1 comment 0 reactions 0 assignees View on GitHub
priority: p2 type: enhancement
Dominant language
Java
Stars
551
Forks
349
Avg merge
1d 13h
Merged PRs (30d)
14

Description

Investigate after Spring Boot 3.2.1 by reenabling `pubsub-stream-sample` in the NativeTests: https://github.com/GoogleCloudPlatform/spring-cloud-gcp/blob/main/.github/workflows/NativeTests.yaml

The following error occurs in the spring-cloud-gcp-pubsub-stream-functional-sample native tests for what appears to be an incompatibility between native images and records:
* https://stackoverflow.com/a/76547543
* Spring source using `record`: https://github.com/spring-projects/spring-integration/blob/main/spring-integration-core/src/main/java/org/springframework/integration/config/ConverterRegistrar.java#L89
* Example error: https://github.com/GoogleCloudPlatform/spring-cloud-gcp/actions/runs/7197427020/job/19604531896?pr=2438
```
Failed generating '/home/runner/work/spring-cloud-gcp/spring-cloud-gcp/spring-cloud-gcp-samples/spring-cloud-gcp-pubsub-stream-functional-sample/spring-cloud-gcp-pubsub-stream-functional-sample-test/target/native-tests' after 4m 59s.
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:403)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:580)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:128)
Caused by: com.oracle.svm.core.util.VMError$HostedError: New Method or Constructor found as reachable after static analysis: public java.lang.Object org.springframework.integration.config.ConverterRegistrar$IntegrationConverterRegistration.converter()
at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.shouldNotReachHere(VMError.java:68)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.reflect.ReflectionFeature.getOrCreateAccessor(ReflectionFeature.java:121)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.reflect.target.ExecutableAccessorComputer.transform(ExecutableAccessorComputer.java:43)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.substitute.ComputedValueField.computeValue(ComputedValueField.java:343)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.substitute.ComputedValueField.readValue(ComputedValueField.java:313)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.meta.ReadableJavaField.readFieldValue(ReadableJavaField.java:38)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ameta.AnalysisConstantReflectionProvider.readValue(AnalysisConstantReflectionProvider.java:97)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.meta.HostedField.readValue(HostedField.java:161)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.image.NativeImageHeap.addObjectToImageHeap(NativeImageHeap.java:439)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.image.NativeImageHeap.addObject(NativeImageHeap.java:295)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.image.NativeImageHeap.processAddObjectWorklist(NativeImageHeap.java:598)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.image.NativeImageHeap.addTrailingObjects(NativeImageHeap.java:198)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:678)
```

Contributor guide

Open the contributing guide

Research direction

Start with .github/workflows/NativeTests.yaml and the spring-cloud-gcp-pubsub-stream-functional-sample native tests. Re-run the disabled pubsub-stream-sample after Spring Boot 3.2.1 or later and investigate the reported record-related native-image failure. Done means the sample is reenabled and its NativeTests pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, spring-boot
Domain
ci-cd, testing-qa
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.