-
Notifications
You must be signed in to change notification settings - Fork 5k
fix(client): heartbeat msg incompatible #34207
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
Conversation
Summary of ChangesHello @wangmm0220, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request addresses a critical incompatibility issue in heartbeat message processing. By introducing client version awareness into the deserialization logic, the system can now correctly interpret and process heartbeat requests from both older and newer client versions. This change ensures robust communication and prevents deserialization failures that could arise from variations in message structure across different client releases. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request addresses a client heartbeat message incompatibility by introducing version-based deserialization. The changes correctly add a clientVersion parameter to deserialization functions and use it to conditionally parse fields, which should resolve the incompatibility with older clients. My main feedback is to optimize the version check by replacing the repeated taosVersionStrToInt call with a pre-calculated constant. This will improve performance and remove a magic string from the code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR fixes a heartbeat message incompatibility issue by adding client version-based conditional deserialization for fields introduced in version 3.3.6.31. The changes enable the server to handle heartbeat messages from both older clients (< 3.3.6.31) that don't include sVer and cInfo fields, and newer clients that do.
- Added
clientVersionparameter to heartbeat deserialization functions to support version-aware parsing - Implemented conditional deserialization of
sVerandcInfofields based on client version >= 3.3.6.31 - Updated function signatures to thread client version through the deserialization call stack
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| source/common/src/msg/tmsg.c | Added client version parameter to deserialization functions and implemented version check logic to conditionally deserialize sVer/cInfo fields; added tversion.h include |
| include/common/tmsg.h | Updated function signature to include clientVersion parameter |
| source/dnode/mnode/impl/src/mndProfile.c | Passed client version from RPC message info to deserialization function |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Description
Issue(s)
Checklist
Please check the items in the checklist if applicable.