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

pb2tarsgo工具从pb2tarsgo变成protoc-gen-go-tarsrpc导致service与func名格式变化 #419

Closed
MeiJunh opened this issue Jan 30, 2023 · 3 comments · Fixed by #420
Closed

Comments

@MeiJunh
Copy link

MeiJunh commented Jan 30, 2023

更新pb文件转成tarsgo的工具之后,发现生成的go文件中的服务名和函数名出现了变化,出现了不兼容的现象,自己无法通过请求路径携带的原始的服务名加上函数名构建invoke访问内部rpc接口。

查看原因发现是protoc-gen-go-tarsrpc中引用的是google.golang.org/protobuf/compiler/protogen,该库对函数名以及服务名都做了首字母大写的驼峰处理,具体处理为 https://github.com/protocolbuffers/protobuf-go/blob/6875c3d7242d1a3db910ce8a504f124cb840c23a/compiler/protogen/protogen.go#L860
但是pb2tarsgo使用的 https://github.com/protocolbuffers/protobuf 未对读取的内容做相关处理。

对该问题处理方式一个是继续使用pb2tarsgo框架代码生成工具,一个是将tarsrpc.go中的代码生成部分做统一的大小写处理。

@MeiJunh
Copy link
Author

MeiJunh commented Jan 30, 2023

思考了一下,第二种方法将tarsrpc.go中的代码生成部分做统一的大小写处理并不能很好的将pb2tarsgo工具切换到protoc-gen-go-tarsrpc,因为protoc-gen-go-tarsrpc不仅仅改了dispatch中的func name还改了客户端调用代码中的func name,导致单个进程内如果有进行其他进程的内部调用,那么这两个进程需要同时发版升级才行。

不知道这个有没有什么比较好方法解决,还是是说pb2tarsgo工具保持不变。

@lbbniu
Copy link
Collaborator

lbbniu commented Feb 13, 2023

1、保持使用 pb2tarsgo
2、客户端和服务端都使用新的protoc-gen-go-tarsrpc

@lbbniu
Copy link
Collaborator

lbbniu commented Apr 18, 2023

思考了一下,第二种方法将tarsrpc.go中的代码生成部分做统一的大小写处理并不能很好的将pb2tarsgo工具切换到protoc-gen-go-tarsrpc,因为protoc-gen-go-tarsrpc不仅仅改了dispatch中的func name还改了客户端调用代码中的func name,导致单个进程内如果有进行其他进程的内部调用,那么这两个进程需要同时发版升级才行。

不知道这个有没有什么比较好方法解决,还是是说pb2tarsgo工具保持不变。

已经做兼容处理

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