-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Migrate away from gogoprotobuf to protobuf v2 API + vtprotobuf #4557
Comments
Love this idea!
|
I think he means that by switching to this proto generator we can benefit from using vtproto's memory pooling to greatly reduce the number of allocations needed for umarshaling when receiving message streams during querying, which could otherwise be allocation-heavy, and thus speed up the code path. |
Yes, this is a great idea! We had a quick chat about this with @bwplotka as well. We should definitely migrate to |
Yep, there's more info here: /~https://github.com/planetscale/vtprotobuf#available-features. We could call It's quite a huge work, I haven't started anything 😄 I thought perhaps this could be a GSoC/LFX project |
Yes i was thinking exactly the same. Shall we propose it? Id be happy to co-mentor |
Hi @iamrajiv we just submitted this project to the Linux foundation student mentorship program for the fall /~https://github.com/cncf/mentoring/blob/main/lfx-mentorship/2021/03-Fall/project_ideas.md#migrate-thanos-to-the-new-protocol-buffers-v2-api |
Hi folks! This looks like an interesting project, and in sync with my skillset. I would be happy to work on this and contribute to Thanos as part of the LFX Mentorship program. I have prior experience with open-source projects through participating (and eventually mentoring) in GSoC. I'm quite proficient in Golang, and have worked with protobuf in the past during my summer internship at Uber, where I was tasked with writing a new proto service from scratch in Go. I'll take a look at the repository and reach out soon with further questions. Thanks! |
Feel free to apply via the LFX website! |
Hello 👋 Looks like there was no activity on this issue for the last two months. |
Still valid |
Hello 👋 Looks like there was no activity on this issue for the last two months. |
I'm afraid that the PRs are the only place you can find info. Also, I wrote a small post detailing the learnings from doing this: https://giedrius.blog/2022/02/04/things-learned-from-trying-to-migrate-to-protobuf-v2-api-from-gogoprotobuf-so-far/. |
Hello 👋 Looks like there was no activity on this issue for the last two months. |
@GiedriusS What's the latest state on this? If there's still some work happy to help. |
@kakkoyun I am continuing work on this - already switched to upstream protobuf compiler. Just need to fix tests & add pooling now. My branch is available on /~https://github.com/GiedriusS/thanos/tree/gogo_remove. |
Hello 👋 Looks like there was no activity on this issue for the last two months. |
Linking the current WIP for more visibility - #5421 |
I finally pushed this over the line but it's not worth it: #7790. A better solution would be to focus on grpc/protobuf alternatives. See the PR for more. |
Is your proposal related to a problem?
gogoprotobuf is unmaintained: gogo/protobuf#691
So, we should move to the new protobuf v2 API. Also, we should try to use https://vitess.io/blog/2021-06-03-a-new-protobuf-generator-for-go/ to not make Thanos slower
Describe the solution you'd like
Move to the protobuf V2 API: https://blog.golang.org/protobuf-apiv2. Also, use vtprotobuf so that on Query side we could get all
SeriesResponse
s from async.Pool
Describe alternatives you've considered
Alternative is to wait if gogoprotobuf will get a new maintainer and maybe then we wouldn't have to move but that probably will never happen.
Additional context
N/A
The text was updated successfully, but these errors were encountered: