Skip to content

chore: prepare java-spanner for (22.3.0) upgrade#4

Draft
mpeddada1 wants to merge 2 commits intomainfrom
22.3.0_update
Draft

chore: prepare java-spanner for (22.3.0) upgrade#4
mpeddada1 wants to merge 2 commits intomainfrom
22.3.0_update

Conversation

@mpeddada1
Copy link
Copy Markdown
Owner

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:

  • Make sure to open an issue as a bug/issue before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea
  • Ensure the tests and linter pass
  • Code coverage does not decrease (if any source code was changed)
  • Appropriate docs were updated (if necessary)

Fixes #<issue_number_goes_here> ☕️

If you write sample code, please follow the samples format.

@mpeddada1
Copy link
Copy Markdown
Owner Author

Without initilialize-at-run-time, we get:

junit.platform.listeners.uid.tracking.output.dir=/usr/local/google/home/mpeddada/IdeaProjects/native-image-experiments/native-image-submodule-2/java-spanner/google-cloud-spanner/target/test-ids -H:Class=org.graalvm.junit.platform.NativeImageJUnitLauncher --no-fallback --no-server -Dspanner.testenv.config.class=com.google.cloud.spanner.GceTestEnvConfig --features=org.graalvm.junit.platform.JUnitPlatformFeature
Warning: Ignoring server-mode native-image argument --no-server.
========================================================================================================================
GraalVM Native Image: Generating 'native-tests' (executable)...
========================================================================================================================
[1/7] Initializing...                                                                                   (15.8s @ 0.63GB)
 Version info: 'GraalVM 22.3.0 Java 17 CE'
 Java version info: '17.0.5+8-jvmci-22.3-b08'
 C compiler: gcc (linux, x86_64, 12.2.0)
 Garbage collector: Serial GC
 7 user-specific feature(s)
 - com.google.api.gax.grpc.nativeimage.GrpcNettyFeature
 - com.google.api.gax.grpc.nativeimage.ProtobufMessageFeature
 - com.google.api.gax.nativeimage.GoogleJsonClientFeature
 - com.google.api.gax.nativeimage.OpenCensusFeature
 - com.google.cloud.spanner.nativeimage.SpannerFeature
 - com.oracle.svm.thirdparty.gson.GsonFeature
 - org.graalvm.junit.platform.JUnitPlatformFeature
[junit-platform-native] Running in 'test listener' mode using files matching pattern [junit-platform-unique-ids*] found in folder [/usr/local/google/home/mpeddada/IdeaProjects/native-image-experiments/native-image-submodule-2/java-spanner/google-cloud-spanner/target/test-ids] and its subfolders.
[2/7] Performing analysis...  []                                                                        (11.0s @ 1.40GB)
   5,573 (87.68%) of  6,356 classes reachable
   8,561 (58.73%) of 14,577 fields reachable
  29,827 (83.66%) of 35,652 methods reachable
     197 classes,     0 fields, and     0 methods registered for reflection

3 fatal errors detected:
Fatal error: com.oracle.graal.pointsto.util.AnalysisError$ParsingError: Error encountered while parsing io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.notifyListener0(io.grpc.netty.shaded.io.netty.util.concurrent.Future, io.grpc.netty.shaded.io.netty.util.concurrent.GenericFutureListener) 
Parsing context:
   at io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
   at io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:571)
   at io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:550)
   at io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
   at io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
   at io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
   at io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.setSuccess(DefaultPromise.java:96)
   at io.grpc.netty.shaded.io.netty.channel.group.DefaultChannelGroupFuture.setSuccess0(DefaultChannelGroupFuture.java:200)

	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisError.parsingError(AnalysisError.java:153)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:104)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureFlowsGraphCreated(MethodTypeFlow.java:83)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.getOrCreateMethodFlowsGraph(MethodTypeFlow.java:65)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.typestate.DefaultStaticInvokeTypeFlow.update(DefaultStaticInvokeTypeFlow.java:64)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.PointsToAnalysis$1.run(PointsToAnalysis.java:488)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.executeCommand(CompletionExecutor.java:193)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.lambda$executeService$0(CompletionExecutor.java:177)
	at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: No instances of org.slf4j.jul.JDK14LoggerAdapter are allowed in the image heap as this class should be initialized at image runtime. To see how this object got instantiated use --trace-object-instantiation=org.slf4j.jul.JDK14LoggerAdapter.
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.classinitialization.ClassInitializationFeature.checkImageHeapInstance(ClassInitializationFeature.java:132)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.meta.AnalysisUniverse.replaceObject(AnalysisUniverse.java:595)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ameta.AnalysisConstantReflectionProvider.replaceObject(AnalysisConstantReflectionProvider.java:177)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ameta.AnalysisConstantReflectionProvider.interceptValue(AnalysisConstantReflectionProvider.java:148)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ameta.AnalysisConstantReflectionProvider.readValue(AnalysisConstantReflectionProvider.java:100)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ameta.AnalysisConstantReflectionProvider.readFieldValue(AnalysisConstantReflectionProvider.java:79)
	at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.util.ConstantFoldUtil$1.readValue(ConstantFoldUtil.java:55)
	at jdk.internal.vm.compiler/org.graalvm.compiler.core.common.spi.JavaConstantFieldProvider.readConstantField(JavaConstantFieldProvider.java:78)
	at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ameta.AnalysisConstantFieldProvider.readConstantField(AnalysisConstantFieldProvider.java:72)
	at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.util.ConstantFoldUtil.tryConstantFold(ConstantFoldUtil.java:51)
	at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.java.LoadFieldNode.asConstant(LoadFieldNode.java:178)
	at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.java.LoadFieldNode.canonical(LoadFieldNode.java:144)
	at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.java.LoadFieldNode.canonical(LoadFieldNode.java:135)
	at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.java.LoadFieldNode.canonical(LoadFieldNode.java:72)
	at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.spi.Canonicalizable$Unary.canonical(Canonicalizable.java:101)
	at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.SimplifyingGraphDecoder.canonicalizeFixedNode(SimplifyingGraphDecoder.java:214)
	at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.canonicalizeFixedNode(PEGraphDecoder.java:1572)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysisGraphDecoder.canonicalizeFixedNode(InlineBeforeAnalysis.java:192)
	at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.SimplifyingGraphDecoder.handleFixedNode(SimplifyingGraphDecoder.java:193)
	at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.GraphDecoder.processNextNode(GraphDecoder.java:821)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysisGraphDecoder.processNextNode(InlineBeforeAnalysis.java:240)
	at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.GraphDecoder.decode(GraphDecoder.java:548)
	at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.decode(PEGraphDecoder.java:833)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysis.decodeGraph(InlineBeforeAnalysis.java:98)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:179)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:349)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:93)
	... 12 more
Fatal error: com.oracle.graal.pointsto.util.AnalysisError$ParsingError: Error encountered while parsing io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.notifyListener0(io.grpc.netty.shaded.io.netty.util.concurrent.Future, io.grpc.netty.shaded.io.netty.util.concurrent.GenericFutureListener) 
Parsing context:
   at io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
   at io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552)
   at io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
   at io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
   at io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
   at io.grpc.netty.shaded.io.netty.util.concurrent.DefaultPromise.setSuccess(DefaultPromise.java:96)
   at io.grpc.netty.shaded.io.netty.channel.group.DefaultChannelGroupFuture.setSuccess0(DefaultChannelGroupFuture.java:200)

	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisError.parsingError(AnalysisError.java:153)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:104)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureFlowsGraphCreated(MethodTypeFlow.java:83)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.getOrCreateMethodFlowsGraph(MethodTypeFlow.java:65)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.typestate.DefaultStaticInvokeTypeFlow.update(DefaultStaticInvokeTypeFlow.java:64)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.PointsToAnalysis$1.run(PointsToAnalysis.java:488)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.executeCommand(CompletionExecutor.java:193)
	at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.lambda$executeService$0(CompletionExecutor.java:177)
	at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: No instances of org.slf4j.jul.JDK14LoggerAdapter are allowed in the image heap as this class should be initialized at image runtime. To see how this object got instantiated use --trace-object-instantiation=org.slf4j.jul.JDK14LoggerAdapter.

Command: mvn test -Pnative '-Dtest=*ClientTest' -DfailIfNoTests=false -Denforcer.skip=true

@mpeddada1
Copy link
Copy Markdown
Owner Author

Now trying initialize-at-run-time without the slf4j dependency to verify behavior:

[INFO] com.google.cloud:google-cloud-spanner:jar:6.34.2-SNAPSHOT
[INFO] +- com.google.cloud:grpc-gcp:jar:1.3.2:compile
[INFO] +- io.grpc:grpc-api:jar:1.51.1:compile
[INFO] |  \- com.google.errorprone:error_prone_annotations:jar:2.16:compile
[INFO] +- io.grpc:grpc-auth:jar:1.51.1:compile
[INFO] +- io.grpc:grpc-context:jar:1.51.1:compile
[INFO] +- io.grpc:grpc-core:jar:1.51.1:compile
[INFO] |  +- com.google.android:annotations:jar:4.1.1.4:runtime
[INFO] |  +- org.codehaus.mojo:animal-sniffer-annotations:jar:1.22:runtime
[INFO] |  \- io.perfmark:perfmark-api:jar:0.26.0:runtime
[INFO] +- io.grpc:grpc-netty-shaded:jar:1.51.1:compile
[INFO] +- io.grpc:grpc-protobuf:jar:1.51.1:compile
[INFO] |  \- io.grpc:grpc-protobuf-lite:jar:1.51.1:compile
[INFO] +- io.grpc:grpc-stub:jar:1.51.1:compile
[INFO] +- com.google.api:api-common:jar:2.3.1:compile
[INFO] |  +- com.google.auto.value:auto-value-annotations:jar:1.10.1:compile
[INFO] |  \- com.google.auto.value:auto-value:jar:1.10.1:compile
[INFO] +- com.google.protobuf:protobuf-java:jar:3.21.12:compile
[INFO] +- com.google.protobuf:protobuf-java-util:jar:3.21.12:compile
[INFO] |  \- com.google.j2objc:j2objc-annotations:jar:1.3:compile
[INFO] +- com.google.api.grpc:proto-google-common-protos:jar:2.11.0:compile
[INFO] +- com.google.api.grpc:grpc-google-common-protos:jar:2.11.0:compile
[INFO] |  +- com.google.guava:failureaccess:jar:1.0.1:compile
[INFO] |  +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
[INFO] |  \- org.checkerframework:checker-qual:jar:3.28.0:compile
[INFO] +- com.google.api.grpc:proto-google-iam-v1:jar:1.6.23:compile
[INFO] +- com.google.cloud:google-cloud-core:jar:2.9.0:compile
[INFO] |  \- com.google.http-client:google-http-client-gson:jar:1.42.3:compile
[INFO] +- com.google.cloud:google-cloud-core-grpc:jar:2.9.0:compile
[INFO] +- io.opencensus:opencensus-api:jar:0.31.1:compile
[INFO] +- io.opencensus:opencensus-contrib-grpc-util:jar:0.31.1:compile
[INFO] +- io.opencensus:opencensus-impl:jar:0.31.1:test
[INFO] |  +- io.opencensus:opencensus-impl-core:jar:0.31.1:test
[INFO] |  \- com.lmax:disruptor:jar:3.4.2:test
[INFO] +- com.google.auth:google-auth-library-oauth2-http:jar:1.14.0:compile
[INFO] +- com.google.http-client:google-http-client:jar:1.42.3:compile
[INFO] |  +- org.apache.httpcomponents:httpclient:jar:4.5.14:compile
[INFO] |  |  +- commons-logging:commons-logging:jar:1.2:compile
[INFO] |  |  \- commons-codec:commons-codec:jar:1.15:compile
[INFO] |  +- org.apache.httpcomponents:httpcore:jar:4.4.16:compile
[INFO] |  \- io.opencensus:opencensus-contrib-http-util:jar:0.31.1:compile
[INFO] +- com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:jar:6.34.2-SNAPSHOT:compile
[INFO] +- com.google.api.grpc:proto-google-cloud-spanner-v1:jar:6.34.2-SNAPSHOT:compile
[INFO] +- com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:jar:6.34.2-SNAPSHOT:compile
[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:jar:6.34.2-SNAPSHOT:compile
[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-v1:jar:6.34.2-SNAPSHOT:compile
[INFO] +- com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:jar:6.34.2-SNAPSHOT:compile
[INFO] +- com.google.guava:guava:jar:31.1-jre:compile
[INFO] +- com.google.api:gax:jar:2.20.2-SNAPSHOT:compile
[INFO] +- com.google.api:gax-grpc:jar:2.20.2-SNAPSHOT:compile
[INFO] +- com.google.api:gax-httpjson:jar:0.105.2-SNAPSHOT:compile
[INFO] +- org.threeten:threetenbp:jar:1.6.5:compile
[INFO] +- com.google.code.findbugs:jsr305:jar:3.0.2:compile
[INFO] +- com.google.code.gson:gson:jar:2.10:compile
[INFO] +- com.google.auth:google-auth-library-credentials:jar:1.14.0:compile
[INFO] +- io.grpc:grpc-alts:jar:1.51.1:compile
[INFO] |  \- org.conscrypt:conscrypt-openjdk-uber:jar:2.5.2:compile
[INFO] +- io.grpc:grpc-grpclb:jar:1.51.1:runtime
[INFO] +- io.grpc:grpc-googleapis:jar:1.51.1:runtime
[INFO] |  \- io.grpc:grpc-xds:jar:1.51.1:runtime
[INFO] |     +- io.opencensus:opencensus-proto:jar:0.2.0:runtime
[INFO] |     +- io.grpc:grpc-services:jar:1.51.1:runtime
[INFO] |     \- com.google.re2j:re2j:jar:1.6:runtime
[INFO] +- io.grpc:grpc-rls:jar:1.51.1:runtime
[INFO] +- org.graalvm.sdk:graal-sdk:jar:22.3.0:provided
[INFO] +- junit:junit:jar:4.13.2:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- com.google.api:gax:jar:testlib:2.20.2-SNAPSHOT:test
[INFO] +- com.google.api:gax-grpc:jar:testlib:2.20.1:test
[INFO] +- com.google.api:gax-httpjson:jar:testlib:0.105.2-SNAPSHOT:test
[INFO] +- com.google.truth:truth:jar:1.1.3:test
[INFO] |  \- org.ow2.asm:asm:jar:9.1:test
[INFO] +- org.mockito:mockito-core:jar:4.11.0:test
[INFO] |  +- net.bytebuddy:byte-buddy:jar:1.12.19:test
[INFO] |  +- net.bytebuddy:byte-buddy-agent:jar:1.12.19:test
[INFO] |  \- org.objenesis:objenesis:jar:3.3:test
[INFO] +- org.json:json:jar:20220924:test
[INFO] +- com.google.guava:guava-testlib:jar:31.1-jre:test
[INFO] +- org.hamcrest:hamcrest:jar:2.2:test
[INFO] +- org.openjdk.jmh:jmh-core:jar:1.36:test
[INFO] |  +- net.sf.jopt-simple:jopt-simple:jar:5.0.4:test
[INFO] |  \- org.apache.commons:commons-math3:jar:3.2:test
[INFO] +- org.openjdk.jmh:jmh-generator-annprocess:jar:1.36:test
[INFO] \- javax.annotation:javax.annotation-api:jar:1.3.2:compile
[INFO] 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant