I have a server with gRPC stream. And after a client, who had previously subscribed on that stream, unsubscribing, I'm getting this error
rpc error: code = Unavailable desc = transport is closing
After I've enabled more detailed logs, I saw this warning
grpc: Server.Serve failed to create ServerTransport: connection error: desc = "transport: http2Server.HandleStreams failed to receive the preface from client: EOF"
And I'm getting it a couple times per second. What can be a problem?
Client
stream, err := s.stream.GetStreamClient(metadata.AppendToOutgoingContext(ctx,"key","value"),&sub.StreamRequest{})
for {
resp, err := stream.Recv()
if err != nil {
stream.CloseSend()
return
}
....
}
Client can also call stream.CloseSend()
after some timeout
Server
GetStreamClient(req *sub.StreamRequest, stream pb.StreamClient) error {
for {
err := stream.Send()
if err != nil {
//log error
return
}
}
}
if err :=stream.CloseSend(); err != nil { ... }
And by cancelling context, i've passed – Yura Zherebukh