kitex icon indicating copy to clipboard operation
kitex copied to clipboard

[windows] grpc go 客户端主动关闭后kitex服务崩溃

Open aesoper101 opened this issue 2 years ago • 14 comments

Describe the bug

项目采用 thrift idl 生成server. 调用方采用grpc go (非kitex客户端) 连接server. 能够正常连接并获得数据返回,但是当客户端主动关闭后,kitex服务崩溃。

这是什么原因呢?

1683739155498

服务端 idl 如下: image

grpc 调用方 protobuf 如下 image

测试代码: image

aesoper101 avatar May 10 '23 18:05 aesoper101

thrift的kitex server和protobuf的grpc client?按理来说请求都应该失败才对...先统一协议吧

ppzqh avatar May 11 '23 01:05 ppzqh

@ppzqh 是的, thrift的kitex server和protobuf的grpc client . 按理不应该请求成功,除非已经转换协议。但是请求确实是成功了的,无论是 protobuf 采用 stream 形式的请求还是 普通的请求。都是成功的。只是在 grpc client 关闭的时候 kitex server 直接挂掉。所以就比较疑惑。

aesoper101 avatar May 11 '23 02:05 aesoper101

协议不通不可能调用成功

YangruiEmma avatar May 11 '23 03:05 YangruiEmma

server 启动如下,全是默认server option.

image

aesoper101 avatar May 11 '23 03:05 aesoper101

协议不同解码会失败的。本地测试可以debug确认一下进入server handler前的解码步骤。或者整理一个demo的repo一起看一下。

ppzqh avatar May 11 '23 04:05 ppzqh

@ppzqh @YangruiEmma 检查了下,是我发错了,kitex server 也是用的 protobuf, 未使用 Fastpb. 但是问题还是一样的。服务端指定了Codec 和 PayloadCodec 也是一样的结果,都是在grpc client 关闭后崩溃。测试repo: https://github.com/aesoper101/kitextest

aesoper101 avatar May 11 '23 05:05 aesoper101

我本地没有复现,你是什么环境呢?还有golang版本

ppzqh avatar May 11 '23 09:05 ppzqh

kitex 0.5.2 golang 1.20 windown 10

aesoper101 avatar May 11 '23 09:05 aesoper101

问题找到了,只有windows环境下会出现。之后会修复,感谢反馈!

ppzqh avatar May 11 '23 09:05 ppzqh

@ppzqh 多谢大佬

aesoper101 avatar May 11 '23 09:05 aesoper101

🙏

ppzqh avatar May 11 '23 10:05 ppzqh

这个问题与io模型相关,暂时不太好修复,所以 windows 环境下 grpc 当前无法使用,抱歉。之后会排期修复。

ppzqh avatar Jun 19 '23 01:06 ppzqh

请问这个bug修复了吗?

skyfish-1024 avatar Sep 19 '23 08:09 skyfish-1024

这个问题暂时还没有修复。

ppzqh avatar Sep 19 '23 10:09 ppzqh