Java GRPC Client : Jetty ALPN/NPN has not been properly configured.

1,121 views
Skip to first unread message

Vinicius Carvalho

unread,
Sep 1, 2016, 7:38:05 PM9/1/16
to Google Cloud Pub/Sub Discussions
Hi there I'm trying the latest google-cloud-pubsub client, and although I'm following the instructions at https://github.com/grpc/grpc-java/blob/master/SECURITY.md

I'm still getting an error : Jetty ALPN/NPN has not been properly configured.

My pom file looks like this:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-pubsub</artifactId>
<version>0.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

I'm trying to run a JUnit test from intellij and it fails:
com.google.cloud.pubsub.PubSubException: io.grpc.StatusRuntimeException: UNKNOWN

at com.google.cloud.pubsub.spi.DefaultPubSubRpc$1.apply(DefaultPubSubRpc.java:174)
at com.google.cloud.pubsub.spi.DefaultPubSubRpc$1.apply(DefaultPubSubRpc.java:168)
at com.google.common.util.concurrent.Futures$CatchingFuture.doFallback(Futures.java:842)
at com.google.common.util.concurrent.Futures$CatchingFuture.doFallback(Futures.java:834)
at com.google.common.util.concurrent.Futures$AbstractCatchingFuture.run(Futures.java:789)
at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:456)
at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:817)
at com.google.common.util.concurrent.AbstractFuture.addListener(AbstractFuture.java:595)
at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.addListener(AbstractFuture.java:96)
at com.google.common.util.concurrent.Futures.catching(Futures.java:553)
at com.google.cloud.pubsub.spi.DefaultPubSubRpc.translate(DefaultPubSubRpc.java:168)
at com.google.cloud.pubsub.spi.DefaultPubSubRpc.create(DefaultPubSubRpc.java:183)
at com.google.cloud.pubsub.PubSubImpl.createAsync(PubSubImpl.java:206)
at com.google.cloud.pubsub.PubSubImpl.create(PubSubImpl.java:201)
at org.springframework.cloud.pubsub.PubsubRpcApplicationTests.contextLoads(PubsubRpcApplicationTests.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: com.google.api.gax.grpc.ApiException: io.grpc.StatusRuntimeException: UNKNOWN
at com.google.api.gax.grpc.ExceptionTransformingCallable$1.onFailure(ExceptionTransformingCallable.java:91)
at com.google.common.util.concurrent.Futures$6.run(Futures.java:1764)
at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:456)
at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:817)
at com.google.common.util.concurrent.AbstractFuture.addListener(AbstractFuture.java:595)
at com.google.common.util.concurrent.Futures.addCallback(Futures.java:1776)
at com.google.common.util.concurrent.Futures.addCallback(Futures.java:1713)
at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:66)
at com.google.api.gax.grpc.RetryingCallable$Retryer.run(RetryingCallable.java:129)
at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:85)
at com.google.api.gax.grpc.ChannelBindingCallable.futureCall(ChannelBindingCallable.java:64)
at com.google.api.gax.grpc.ApiCallable.futureCall(ApiCallable.java:237)
at com.google.api.gax.grpc.ApiCallable.futureCall(ApiCallable.java:248)
... 36 more
Caused by: io.grpc.StatusRuntimeException: UNKNOWN
at io.grpc.Status.asRuntimeException(Status.java:545)
at io.grpc.stub.ClientCalls$UnaryStreamToFuture.onClose(ClientCalls.java:417)
at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:203)
at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:64)
at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:248)
at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:227)
at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:186)
at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:58)
at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:65)
... 41 more
Caused by: java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly configured.
at io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:153)
at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:130)
at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:119)
at io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:90)
at io.grpc.netty.NettyChannelBuilder.createProtocolNegotiator(NettyChannelBuilder.java:263)
at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.newClientTransport(NettyChannelBuilder.java:322)
at io.grpc.internal.CallCredentialsApplyingTransportFactory.newClientTransport(CallCredentialsApplyingTransportFactory.java:62)
at io.grpc.internal.TransportSet.startNewTransport(TransportSet.java:199)
at io.grpc.internal.TransportSet.obtainActiveTransport(TransportSet.java:179)
at io.grpc.internal.ManagedChannelImpl$3.getTransport(ManagedChannelImpl.java:476)
at io.grpc.internal.ManagedChannelImpl$3.getTransport(ManagedChannelImpl.java:432)
at io.grpc.DummyLoadBalancerFactory$DummyLoadBalancer.pickTransport(DummyLoadBalancerFactory.java:105)
at io.grpc.internal.ManagedChannelImpl$1.get(ManagedChannelImpl.java:149)
at io.grpc.internal.ClientCallImpl.start(ClientCallImpl.java:201)
at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:104)
at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:195)
... 48 more

Am I missing something obvious on setting up ALPN on GRPC?

Regards

Vinicius Carvalho

unread,
Sep 1, 2016, 9:31:15 PM9/1/16
to Google Cloud Pub/Sub Discussions
Turns out that because of tomcat the native openssl library was not being loaded. Switched to Jetty and it works

Cheers
Reply all
Reply to author
Forward
0 new messages