Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
zrlw opened this issue Dec 8, 2021 · 3 comments · Fixed by #904
Closed

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

zrlw opened this issue Dec 8, 2021 · 3 comments · Fixed by #904

Comments

@zrlw
Copy link

zrlw commented Dec 8, 2021

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并不兼容,运行过程中要么提示类找不到,要么提示属性不存在,建议做一下新版本兼容性升级。

@fengjiachun
Copy link
Contributor

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

@githubcheng2978
Copy link

githubcheng2978 commented Jun 16, 2022

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

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

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

@KomachiSion
Copy link
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants