1

我有一個將結果寫入Cloud Spanner表的數據流作業。一切工作正常,當我在本地運行工作,但運行它在數據流提供了以下錯誤 -Data Span with Cloud Spanner:java.lang.IllegalArgumentException:Jetty ALPN/NPN尚未正確配置

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) 

我在嘗試創建SpannerOptions例如像,所以當這個錯誤 - 我看到了this question

val options: SpannerOptions = SpannerOptions.newBuilder().build() 

但不包括netty-all就像下面沒有幫助。

libraryDependencies ++= libraries(
    apache_beam, 
    circe, 
    scalatest % Test, 
    junit % Test, 
    hamcrest % Test 
).map(_.exclude("io.netty", "netty-all")) 

我該怎麼做才能解決這個問題?

+0

您使用的是什麼版本的Cloud Spanner Java庫?如果您的構建路徑中存在多個衝突版本的Tcnative,或者缺少它,則此錯誤是典型的。在最近版本的Cloud Spanner庫中,tcnative軟件包已從「io.netty.tcnative」移動到「io.netty.internal.tcnative」。你可以嘗試從你的依賴中排除後者,看看它是否有幫助。 –

+0

@KnutOlavLoite我發現這個錯誤發生於''com.google.cloud「%」google-cloud-pubsub「%」0.21.1-beta「'是項目的依賴項。你有什麼信息嗎?謝謝! – Kakaji

+0

我可以看到''com.google.cloud「%」google-cloud-pubsub「%」0.21.1-beta「'引入了'io.netty:netty-tcnative-boringssl-static:2.0.3.Final'進入清除Beam需要的'io.netty:netty-tcnative-boringssl-static:1.1.33.Fork26'的項目。直接用'1.1.33.Fork26'覆蓋'2.0.3'並沒有幫助。 – Kakaji

回答

1

通過將google-cloud-spanner版本與Apache Beam的pom.xml中指定的版本進行匹配進行修復。