I have a dataflow job that writes results to a Cloud Spanner table. Everything works fine when I run the job locally but running it on Dataflow gives the following error -
java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured.
io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:174)
io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:151)
io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:139)
io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:109)
com.google.cloud.spanner.SpannerOptions$NettyRpcChannelFactory.newSslContext(SpannerOptions.java:289)
com.google.cloud.spanner.SpannerOptions$NettyRpcChannelFactory.newChannel(SpannerOptions.java:278)
com.google.cloud.spanner.SpannerOptions.createChannel(SpannerOptions.java:252)
com.google.cloud.spanner.SpannerOptions.createChannels(SpannerOptions.java:239)
com.google.cloud.spanner.SpannerOptions.<init>(SpannerOptions.java:88)
com.google.cloud.spanner.SpannerOptions.<init>(SpannerOptions.java:43)
com.google.cloud.spanner.SpannerOptions$Builder.build(SpannerOptions.java:179)
I get this error when trying to create SpannerOptions
instance like so -
val options: SpannerOptions = SpannerOptions.newBuilder().build()
I saw this question but excluding netty-all
like below does not help.
libraryDependencies ++= libraries(
apache_beam,
circe,
scalatest % Test,
junit % Test,
hamcrest % Test
).map(_.exclude("io.netty", "netty-all"))
What can I do to fix this?
Fixed by matching google-cloud-spanner
version with the one specified in Apache Beam's pom.xml.