-
Notifications
You must be signed in to change notification settings - Fork 1.1k
[Bug]: LocalSpannerIO package namespace conflict with Beam's SpannerIO #1362
Copy link
Copy link
Closed
Labels
Description
Related Template(s)
V1
Template Version
N/A
What happened?
V1 templates use LocalSpannerIO under Beam's namespace: https://github.com/GoogleCloudPlatform/DataflowTemplates/tree/main/v1/src/main/java/org/apache/beam/sdk/io/gcp/spanner and depends on beam-sdks-java-io-google-cloud-platform as well, causing unpredictable class conflict.
It happens in the 2.55.0 release validation: #1361 SpannerIO V1 templates failed with error
Caused by: java.lang.NoSuchMethodError: 'org.apache.beam.sdk.options.ValueProvider org.apache.beam.sdk.io.gcp.spanner.SpannerConfig.getCredentials()'
at org.apache.beam.sdk.io.gcp.spanner.SpannerAccessor.buildSpannerOptions(SpannerAccessor.java:228)
at org.apache.beam.sdk.io.gcp.spanner.SpannerAccessor.createAndConnect(SpannerAccessor.java:237)
at org.apache.beam.sdk.io.gcp.spanner.SpannerAccessor.getOrCreate(SpannerAccessor.java:94)
at org.apache.beam.sdk.io.gcp.spanner.LocalSpannerAccessor.getOrCreate(LocalSpannerAccessor.java:57)
at com.google.cloud.teleport.templates.common.SpannerConverters$CreateTransactionFnWithTimestamp.setup(SpannerConverters.java:766
because SpannerAccessor was picked from beam-io-gcp but SpannerConfig was picked from v1 at run time, causing NoSuchMethodError.
We should either relocate the namespace of LocalSpannerIO or migrate to Beam's SpannerIO
Relevant log output
No response
Reactions are currently unavailable