sofa-jraft icon indicating copy to clipboard operation
sofa-jraft copied to clipboard

sofa-jraft依赖的grpc1.17.0版本老旧而且缺陷多,建议升级依赖版本

Open zrlw opened this issue 4 years ago • 2 comments

Describe the bug

grpc 1.17.0 以及其依赖的很多组件版本都有很多缺陷,其中比较严重的是grpc-java 1.28之前的版本所依赖的netty存在的Received DATA frame for an unknown stream缺陷。 sofa-jraft 1.3.9和修复缺陷后的grpc并不兼容,运行过程中要么提示类找不到,要么提示属性不存在,建议做一下新版本兼容性升级。

zrlw avatar Dec 08 '21 17:12 zrlw

1.31 以上拿不到 netty channel,没办法绑定连接(raft log pipeline 复制需要),如果 1.30 满足需求可以升级 1.30 试试, 1.31 以上的兼容性还要再想想办法

fengjiachun avatar Dec 09 '21 04:12 fengjiachun

这个nacos也用到类似的方式获取channel

private Channel getInternalChannel(ServerCall serverCall) {
    ServerStream serverStream = (ServerStream) ReflectUtils.getFieldValue(serverCall, "stream");
    return (Channel) ReflectUtils.getFieldValue(serverStream, "channel");
}

但低版本的有一些严重的安全问题,升级之后,NettyServerStream 里面已经没有了channel。 但可以通过对WriteQueue writeQueue进一步反射获取。 但这种解决不了根本的问题。

githubcheng2978 avatar Jun 16 '22 03:06 githubcheng2978

#672 看起来短期内应该也无法完成,是否能我这边提交一个PR, 先多进行一层反射,先取到WriteQueue中的channel,适配上新版本grpc,不然旧版本卡着也不是一个办法。 同样Nacos这边也先进性多一层反射。

KomachiSion avatar Nov 17 '22 11:11 KomachiSion