Google-cloud-java: Error: Jetty ALPN/NPN has not been properly configured.

Created on 5 Oct 2017  路  18Comments  路  Source: googleapis/google-cloud-java

Related to #2266 - but is not resolved by anything in there either.

Stack trace

com.google.cloud.logging.LoggingException: java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly
configured.
1419         at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:66)
1420         at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:58)
1421         at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:472)
1422         at com.google.cloud.logging.LoggingOptions.getLoggingRpcV2(LoggingOptions.java:134)
1423         at com.google.cloud.logging.LoggingImpl.<init>(LoggingImpl.java:108)
1424         at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:46)
1425         at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:41)
1426         at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:459)
1427         at com.myproject.framework.logger.StackdriverAppender.<init>(StackdriverAppender.java:49)
1428         at com.myproject.framework.utils.LoggerControl.addStackdriverAppender(LoggerControl.java:131)
1429         at com.myproject.framework.config.CoreInitializer.initialize(CoreInitializer.java:510)
1430         at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:635)
1431         at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:349)
1432         at org.springframework.boot.SpringApplication.run(SpringApplication.java:313)
1433         at com.myproject.framework.configserver.StartConfigServer.main(StartConfigServer.java:45)
1434         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
1435         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
1436         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
1437         at java.lang.reflect.Method.invoke(Method.java:498)
1438         at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
1439         at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
1440         at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
1441         at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
1442 Caused by: java.io.IOException: java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly
configured.
1443         at com.google.cloud.logging.spi.v2.GrpcLoggingRpc.<init>(GrpcLoggingRpc.java:141)
1444         at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:64)
1445         ... 22 common frames omitted
1446 Caused by: java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured.
1447         at io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:159)
1448         at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:136)
1449         at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:124)
1450         at io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:94)
1451         at
io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DefaultNettyTransportCreationParamsFilterFactory.<init>(NettyChannelBuilder.java:525)
1452         at
io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DefaultNettyTransportCreationParamsFilterFactory.<init>(NettyChannelBuilder.java:518)
1453         at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.<init>(NettyChannelBuilder.java:457)
1454         at io.grpc.netty.NettyChannelBuilder.buildTransportFactory(NettyChannelBuilder.java:326)
1455         at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:315)
1456         at
com.google.api.gax.grpc.InstantiatingChannelProvider.createChannel(InstantiatingChannelProvider.java:131)
1457         at com.google.api.gax.grpc.InstantiatingChannelProvider.getChannel(InstantiatingChannelProvider.java:116)
1458         at com.google.api.gax.grpc.GrpcTransportProvider.getTransport(GrpcTransportProvider.java:98)
1459         at com.google.cloud.logging.spi.v2.GrpcLoggingRpc.<init>(GrpcLoggingRpc.java:112)
1460         ... 23 common frames omitted

compatibility tool output.

OS details:
  os.detected.name: linux
  os.detected.arch: x86_64
  os.detected.classifier: linux-x86_64
  os.detected.release: ubuntu
  os.detected.release.version: 17.04
JVM details:
  Java version: 1.8.0_131
  Java specification version: 1.8
  JVM bit mode: 64
OpenSSL details:
  open ssl is available: true
  ALPN is supported: true
Checking compatibility...
  [PASS] This OS + architecture is supported.
  [PASS] 64-bit JVM is supported.
  [PASS] Open SSL is available
  [PASS] Open SSL ALPN is supported
Result: UNKNOWN (checker implementation not complete)
  Based on what was checked, nothing was identified that would
  prevent you from using grpc-based APIs.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.933 s
[INFO] Finished at: 2017-09-27T18:21:20+00:00
[INFO] Final Memory: 17M/470M
[INFO] ------------------------------------------------------------------------

logging question

Most helpful comment

For those that landed on this issue from search, please see gRPC troubleshooting guide https://github.com/grpc/grpc-java/blob/master/SECURITY.md#troubleshooting

All 18 comments

Happy to provide whatever other info is required.

tree.txt

attached the maven dep tree, might provide some clarity.

forcing 2.0.5.Final or 2.0.6.Final of netty-tcnative-boringssl-static has no change either.

       <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-logging</artifactId>
            <version>${google.cloud.apis}</version>
            <exclusions>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-tcnative-boringssl-static</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-tcnative-boringssl-static</artifactId>
            <version>2.0.6.Final</version>
        </dependency>

also ensuring that it has the correct classifier for boringssl-static has no affect.

        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-logging</artifactId>
            <version>${google.cloud.apis}</version>
            <exclusions>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-tcnative-boringssl-static</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-tcnative-boringssl-static</artifactId>
            <version>2.0.6.Final</version>
            <classifier>linux-x86_64</classifier>
        </dependency>

Hmm! I tried this locally in a new Maven project:

  <dependencies>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-logging</artifactId>
      <version>1.7.0</version>
    </dependency>
  </dependencies>

and was able to make a call to create metrics.

@qorpus Could you try creating a new Maven project to test? The code I used to test is this:

    LoggingOptions options = LoggingOptions.getDefaultInstance();
    try (Logging logging = options.getService()) {
      MetricInfo metricInfo =
          MetricInfo.newBuilder("test-metric", "severity >= ERROR")
              .setDescription("Log entries with severity higher or equal to ERROR")
              .build();
      logging.create(metricInfo);
    }

Are you using Tomcat or anything like that?

@qorpus : have you set authorization credentials either using gcloud auth application-default login if running locally or using GOOGLE_APPLICATION_CREDENTIALS env var ?

@jabubake - yeah that all seems fine, because if we roll back to 1.1.0 env it works correctly!

vertx brings in an older version of netty, and possibly causing your issue, can you try adding
a dependencyManagement section ?

 <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-handler</artifactId>
        <version>4.1.14.Final</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

Looking at your dependency tree, likely you need to manage your guava version.

@jabubake - tried that out, added in a raft of depManagement for netty packages, but alas no luck

017-10-11 15:01:11,828 ERROR []-[] [main] o.c.r.u.LoggerControl - Could not append stackdriver appender
com.google.cloud.logging.LoggingException: java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured.
    at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:66)
    at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:58)
    at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:472)
    at com.google.cloud.logging.LoggingOptions.getLoggingRpcV2(LoggingOptions.java:134)
    at com.google.cloud.logging.LoggingImpl.<init>(LoggingImpl.java:108)
    at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:46)
    at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:41)
    at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:459)
    at com.google.cloud.logging.logback.LoggingAppender.getLogging(LoggingAppender.java:201)
    at com.google.cloud.logging.logback.LoggingAppender.start(LoggingAppender.java:166)

@pongad - not using tomcat, we are using Apache Ignite and Springboot though.

Will try out your suggestion and post results.

@pongad - that worked fine, so clearly I am having some dependency conflicts.

grpc/grpc-java#3025 is probably the canonical issue for this.

I agree with @lesv . I'll close this as duplicate. Please reopen if required, though I believe this is a problem more fit for gRPC, not this repo.

For those that landed on this issue from search, please see gRPC troubleshooting guide https://github.com/grpc/grpc-java/blob/master/SECURITY.md#troubleshooting

I ran into the same error. Following previous Troubleshooting guide, indeed I had a dependency conflict. As the io.netty library was imported by another maven artefact not related to google. So I disabled temporarily the oldest one and left only the google cloud one. It all worked fine afterwards.

An update: We have a PR to shade netty. Hopefully this means the problem will go away the next release.

I am using google-cloud-vision version 1.32.0 with Java 8. It works fine in mac however when I tried on Linux with same Java 8, I am getting exception
java.lang.IllegalArgumentException: ALPN is not configured properly. See https://github.com/grpc/grpc-java/blob/master/SECURITY.md#troubleshooting for more information.
at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:166)
at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:136)
at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:124)
at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:94)
at io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DefaultNettyTransportCreationParamsFilterFactory.(NettyChannelBuilder.java:546)
at io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DefaultNettyTransportCreationParamsFilterFactory.(NettyChannelBuilder.java:539)
at io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.(NettyChannelBuilder.java:477)
at io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder.buildTransportFactory(NettyChannelBuilder.java:325)
at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:362)
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createSingleChannel(InstantiatingGrpcChannelProvider.java:206)
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createChannel(InstantiatingGrpcChannelProvider.java:157)
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.getTransportChannel(InstantiatingGrpcChannelProvider.java:149)
at com.google.api.gax.rpc.ClientContext.create(ClientContext.java:151)
at com.google.cloud.vision.v1.stub.GrpcImageAnnotatorStub.create(GrpcImageAnnotatorStub.java:84)
at com.google.cloud.vision.v1.stub.ImageAnnotatorStubSettings.createStub(ImageAnnotatorStubSettings.java:120)
at com.google.cloud.vision.v1.ImageAnnotatorClient.(ImageAnnotatorClient.java:136)
at com.google.cloud.vision.v1.ImageAnnotatorClient.create(ImageAnnotatorClient.java:117)
at com.hp.wex.utilities.FileDirStringOp.getOcrText(FileDirStringOp.java:250)
at com.hp.wex.MainApp.main(MainApp.java:203)
Caused by: java.lang.ClassNotFoundException: org/eclipse/jetty/alpn/ALPN
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at io.grpc.netty.shaded.io.grpc.netty.JettyTlsUtil.isJettyAlpnConfigured(JettyTlsUtil.java:64)
at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:153)
... 18 more
can any one help me out with this??

Which version of Linux? 32/64 bit?

Was this page helpful?
0 / 5 - 0 ratings