【问题标题】:Dataflow with Cloud Spanner: java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configuredCloud Spanner 的数据流:java.lang.IllegalArgumentException:Jetty ALPN/NPN 未正确配置
【发布时间】:2018-01-23 06:24:51
【问题描述】:

我有一个将结果写入 Cloud Spanner 表的数据流作业。当我在本地运行作业时一切正常,但在 Dataflow 上运行它会出现以下错误 -

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 实例时收到此错误 -

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

我看到了this question,但像下面这样排除netty-all 并没有帮助。

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

我能做些什么来解决这个问题?

【问题讨论】:

  • 您使用的是什么版本的 Cloud Spanner Java 库?如果您的构建路径中有多个冲突的 tcnative 版本,或者您缺少它,则此错误很典型。在 Cloud Spanner 库的最新版本中,tcnative 包已从“io.netty.tcnative”移至“io.netty.internal.tcnative”。您可以尝试将后者从您的依赖项中排除,看看是否有帮助。
  • @KnutOlavLoite 我观察到发生此错误,然后"com.google.cloud" % "google-cloud-pubsub" % "0.21.1-beta" 是项目的依赖项。请问您有这方面的资料吗?谢谢!
  • 我可以看到 "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 没有帮助。
  • 对不起,我不知道。我创建了一个关于如何将 Google Cloud Spanner JDBC 与 Dataflow 一起使用的教程。 JDBC 驱动程序隐藏了它的依赖关系,这应该(在大多数情况下)解决这些问题。我不知道这是否适合你,但你可以在这里找到教程:googlecloudspanner.com/2017/10/…

标签: java scala google-cloud-platform google-cloud-dataflow google-cloud-spanner


【解决方案1】:

通过将 google-cloud-spanner 版本与 Apache Beam 的 pom.xml 中指定的版本匹配来修复。

【讨论】:

    猜你喜欢
    • 2017-11-16
    • 2017-08-19
    • 2018-07-23
    • 2017-10-07
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 2023-04-10
    • 2017-07-03
    相关资源
    最近更新 更多