1 year ago

#376905

test-img

anonymous

Bloom RPC response : "error": "14 UNAVAILABLE: GOAWAY received"

I am new to gRPC integration with SpringBoot. In spring boot application I have created a module and defined .proto in it. I have compiled the proto file and generated class files.

I have added the jar of this proto in server and created an api for accepting the request from client.

I have tried invoking the server from bloom rpc, and in response I am getting

"error": "14 UNAVAILABLE: GOAWAY received"

proto file

syntax = "proto3";

package com.test.spi;

option java_multiple_files = true;
option java_package = "com.test.spi";
option java_outer_classname = "RequestTest";

message Request{
  Header head = 1;
  Body body = 2;

  message Header {
    string version = 1;
  }

  message Body {
      string type = 1;
  }
}

message Response{
  Header head = 1;
  Body body = 2;

  message Header {
    string version = 1;
  }

  message Body {
    string desc = 1;
  }
}

service Service {
  rpc testApi(Request) returns (Response);
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>test-service</artifactId>
        <groupId>com.test</groupId>
        <version>0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>grpc-contract</artifactId>
    <packaging>jar</packaging>
    <name>grpc-contract</name>
    <version>1.0.2-SNAPSHOT</version>
    <properties>
        <spring.boot.dependencies.version>2.5.2</spring.boot.dependencies.version>
        <org.projectlombok.version>1.18.20</org.projectlombok.version>
        <io.grpc.version>1.37.0</io.grpc.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-netty</artifactId>
            <version>${io.grpc.version}</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-transport-native-epoll</artifactId>
            <version>4.0.40.Final</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-protobuf</artifactId>
            <version>${io.grpc.version}</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-stub</artifactId>
            <version>${io.grpc.version}</version>
        </dependency>
        <dependency>
            <groupId>net.devh</groupId>
            <artifactId>grpc-spring-boot-starter</artifactId>
            <version>2.12.0.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>io.grpc</groupId>
                    <artifactId>grpc-netty-shaded</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <distributionManagement>
        
    </distributionManagement>
    <build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.7.0</version>
            </extension>
        </extensions>
        <plugins>
            <plugin>
                <groupId>org.xolstice.maven.plugins</groupId>
                <artifactId>protobuf-maven-plugin</artifactId>
                <version>0.6.1</version>
                <configuration>
                    <protocArtifact>
                        com.google.protobuf:protoc:3.3.0:exe:${os.detected.classifier}
                    </protocArtifact>
                    <pluginId>grpc-java</pluginId>

                    <pluginArtifact>
                        io.grpc:protoc-gen-grpc-java:1.4.0:exe:${os.detected.classifier}
                    </pluginArtifact>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>compile-custom</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

service.java


import io.grpc.stub.StreamObserver;
import net.devh.boot.grpc.server.service.GrpcService;

@GrpcService
public class RequestService extends RequestTestGrpc.RequestTestServiceImplBase {

    @Override
    public void testApi(Request request, StreamObserver<Response> responseObserver) {
        System.out.println("received request:-------------------");
        Response.Body body = Response.Body.newBuilder()
                .setOrderId("1234567")
                .build();
        Response response = Response.newBuilder()
                        .setBody(body)
                .build();
        responseObserver.onNext(response);
        responseObserver.onCompleted();
    }
}

console output

2022-04-05 15:16:42.974 DEBUG 20008 --- [-worker-ELG-3-1] io.grpc.netty.NettyServerHandler         : [id: 0x8516478e, L:/0:0:0:0:0:0:0:1:9090 - R:/0:0:0:0:0:0:0:1:58123] OUTBOUND GO_AWAY: lastStreamId=2147483647 errorCode=2 length=0 bytes=
2022-04-05 15:16:42.976 DEBUG 20008 --- [-worker-ELG-3-1] i.n.h.c.http2.Http2ConnectionHandler     : [id: 0x8516478e, L:/0:0:0:0:0:0:0:1:9090 - R:/0:0:0:0:0:0:0:1:58123] Sent GOAWAY: lastStreamId '2147483647', errorCode '2', debugData ''. Forcing shutdown of the connection.
2022-04-05 15:16:42.977  INFO 20008 --- [-worker-ELG-3-1] i.g.n.NettyServerTransport.connections   : Transport failed

java.lang.NullPointerException: null
    at java.base/java.util.regex.Matcher.getTextLength(Matcher.java:1769) ~[na:na]
    at java.base/java.util.regex.Matcher.reset(Matcher.java:416) ~[na:na]
    at java.base/java.util.regex.Matcher.<init>(Matcher.java:253) ~[na:na]
    at java.base/java.util.regex.Pattern.matcher(Pattern.java:1147) ~[na:na]
    at java.base/java.util.Formatter.parse(Formatter.java:2608) ~[na:na]
    at java.base/java.util.Formatter.format(Formatter.java:2563) ~[na:na]
    at java.base/java.util.Formatter.format(Formatter.java:2517) ~[na:na]
    at java.base/java.lang.String.format(String.java:2747) ~[na:na]
    at io.netty.handler.codec.http2.Http2Exception.connectionError(Http2Exception.java:122) ~[netty-codec-http2-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.handler.codec.http2.DefaultHttp2HeadersDecoder.decodeHeaders(DefaultHttp2HeadersDecoder.java:136) ~[netty-codec-http2-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader$HeadersBlockBuilder.headers(DefaultHttp2FrameReader.java:732) ~[netty-codec-http2-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader$2.processFragment(DefaultHttp2FrameReader.java:476) ~[netty-codec-http2-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readHeadersFrame(DefaultHttp2FrameReader.java:484) ~[netty-codec-http2-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(DefaultHttp2FrameReader.java:253) ~[netty-codec-http2-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:159) ~[netty-codec-http2-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.handler.codec.http2.Http2InboundFrameLogger.readFrame(Http2InboundFrameLogger.java:41) ~[netty-codec-http2-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:173) ~[netty-codec-http2-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:378) ~[netty-codec-http2-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.handler.codec.http2.Http2ConnectionHandler$PrefaceDecoder.decode(Http2ConnectionHandler.java:242) [netty-codec-http2-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:438) [netty-codec-http2-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:510) [netty-codec-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:449) [netty-codec-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:279) [netty-codec-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [netty-transport-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [netty-transport-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) [netty-transport-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722) [netty-transport-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658) [netty-transport-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584) [netty-transport-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) [netty-transport-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [netty-common-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.75.Final.jar:4.1.75.Final]
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.75.Final.jar:4.1.75.Final]
    at java.base/java.lang.Thread.run(Thread.java:844) [na:na]

Please help me in resolving this issue.

grpc

grpc-java

0 Answers

Your Answer

Accepted video resources