не удается подключиться к серверу grpc, получая сообщение «Первый полученный кадр не был SETTINGS» - PullRequest
0 голосов
/ 12 апреля 2019

Я сгенерировал код Java из плагина maven 'grpc-java' и опубликовал. использование артефакта в проекте sbt для подключения к серверу grpc. но не в состоянии соединиться (на кластере kubernates). в то время как я подключаюсь из локальной сети, используя переадресацию портов, он подключается, и сообщения отправляются (из проекта maven).

Код клиента, используемый в sbt, ниже

ManagedChannelBuilder<?> managedChannelBuilder = ManagedChannelBuilder.forAddress(host, port).usePlaintext();
        MyGrpc.MyBlockingStub myBlockingStub = MyGrpc.newMyStub(managedChannelBuilder.build());

Ошибка ниже при попытке отправить сообщение. В чем может быть причина.

зависимости в sbt:

"io.grpc" % "grpc-core" % "1.20.0",
  "io.grpc" % "grpc-netty-shaded" % "1.20.0",
  "io.grpc" % "grpc-protobuf" % "1.20.0",
  "io.grpc" % "grpc-stub" % "1.20.0",
  "io.netty"%"netty-codec-http2"%"4.1.34.Final",
  "io.netty"%"netty-codec-http"%"4.1.34.Final"

есть и другие зависимости проекта (asticsearch, postgres, mysql, redis, aws ....)

    at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:233) ~[io.grpc.grpc-stub-1.18.0.jar:1.18.0]
    at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:214) ~[io.grpc.grpc-stub-1.18.0.jar:1.18.0]
    at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:139) ~[io.grpc.grpc-stub-1.18.0.jar:1.18.0]
......  play.core.Router$HandlerInvokerFactory$$anon$4.resultCall(Router.scala:264) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at play.core.Router$HandlerInvokerFactory$JavaActionInvokerFactory$$anon$15$$anon$1.invocation(Router.scala:255) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:55) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at play.GlobalSettings$1.call(GlobalSettings.java:67) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at actions.InitAction.call(InitAction.java:47) [gameengine.gameengine-avengers.jar:avengers]
    at play.core.j.JavaAction$$anonfun$11.apply(JavaAction.scala:82) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at play.core.j.JavaAction$$anonfun$11.apply(JavaAction.scala:82) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) [org.scala-lang.scala-library-2.11.1.jar:na]
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) [org.scala-lang.scala-library-2.11.1.jar:na]
    at play.core.j.HttpExecutionContext$$anon$2.run(HttpExecutionContext.scala:40) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:46) [com.typesafe.play.play-iteratees_2.11-2.3.9.jar:2.3.9]
    at play.core.j.HttpExecutionContext.execute(HttpExecutionContext.scala:32) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at scala.concurrent.impl.Future$.apply(Future.scala:31) [org.scala-lang.scala-library-2.11.1.jar:na]
    at scala.concurrent.Future$.apply(Future.scala:492) [org.scala-lang.scala-library-2.11.1.jar:na]
    at play.core.j.JavaAction$class.apply(JavaAction.scala:82) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at play.core.Router$HandlerInvokerFactory$JavaActionInvokerFactory$$anon$15$$anon$1.apply(Router.scala:252) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:130) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:130) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:129) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:128) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at scala.Option.map(Option.scala:145) [org.scala-lang.scala-library-2.11.1.jar:na]
    at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:128) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:121) [com.typesafe.play.play_2.11-2.3.9.jar:2.3.9]
    at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:483) [com.typesafe.play.play-iteratees_2.11-2.3.9.jar:2.3.9]
    at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:483) [com.typesafe.play.play-iteratees_2.11-2.3.9.jar:2.3.9]
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:519) [com.typesafe.play.play-iteratees_2.11-2.3.9.jar:2.3.9]
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:519) [com.typesafe.play.play-iteratees_2.11-2.3.9.jar:2.3.9]
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$14.apply(Iteratee.scala:496) [com.typesafe.play.play-iteratees_2.11-2.3.9.jar:2.3.9]
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$14.apply(Iteratee.scala:496) [com.typesafe.play.play-iteratees_2.11-2.3.9.jar:2.3.9]
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) [org.scala-lang.scala-library-2.11.1.jar:na]
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) [org.scala-lang.scala-library-2.11.1.jar:na]
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) [com.typesafe.akka.akka-actor_2.11-2.3.4.jar:na]
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393) [com.typesafe.akka.akka-actor_2.11-2.3.4.jar:na]
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [org.scala-lang.scala-library-2.11.1.jar:na]
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [org.scala-lang.scala-library-2.11.1.jar:na]
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [org.scala-lang.scala-library-2.11.1.jar:na]
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [org.scala-lang.scala-library-2.11.1.jar:na]
Caused by: io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2Exception: First received frame was not SETTINGS. Hex dump for first 5 bytes: 485454502f
    at io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2Exception.connectionError(Http2Exception.java:85) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.verifyFirstFrameIsSettings(Http2ConnectionHandler.java:350) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.decode(Http2ConnectionHandler.java:251) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:450) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:656) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:591) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:508) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:470) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:909) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at io.grpc.netty.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[io.grpc.grpc-netty-shaded-1.18.0.jar:1.18.0]
    at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_181]```

1 Ответ

1 голос
/ 12 апреля 2019

Остальная часть сообщения об ошибке гласит: «Шестнадцатеричный дамп для первых 5 байтов: 485454502f». Hex 485454502f - это ASCII "HTTP /". Сервер, вероятно, является сервером HTTP / 1, а не сервером HTTP / 2. Дважды проверьте, что вы обращаетесь к нужному серверу и поддерживает ли он gRPC.

...