-
Notifications
You must be signed in to change notification settings - Fork 489
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
compute <-> sk protocol v3 #10647
base: main
Are you sure you want to change the base?
compute <-> sk protocol v3 #10647
Conversation
7447 tests run: 7093 passed, 0 failed, 354 skipped (full report)Code coverage* (full report)
* collected from Rust tests only The comment gets automatically updated with the latest test results
748bb5d at 2025-02-07T11:55:16.429Z :recycle: |
safekeeper/src/safekeeper.rs
Outdated
MAX_SEND_SIZE | ||
); | ||
// TODO remove proto_version == 3 after converting all msgs | ||
} else if proto_version == SK_PROTO_VERSION_2 || proto_version == SK_PROTO_VERSION_3 { |
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.
I missing something but doesn't proto_version == SK_PROTO_VERSION_3
handled in the condition above?
Also I believe comment should be // TODO remove proto_version == 2
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.
Thanks, indeed forgot to remove it. I was just using proto_version == SK_PROTO_VERSION_3 to test things before all messages were made into v3. Fixed.
Problem
As part of #8614 we need to pass membership configurations between compute and safekeepers.
Summary of changes
Add version 3 of the protocol carrying membership configurations. Greeting message in both sides gets full conf, and other messages generation number only. Use protocol bump to include other accumulated changes:
Per message changes, apart from mconf:
Both compute and sk are able to talk v2 and v3 to make rollbacks (in case we need them) easier; neon.safekeeper_proto_version GUC sets the client version. v2 code can be dropped later.
So far empty conf is passed everywhere, future PRs will handle them.
To test, add param to some tests choosing proto version; we want to test both 2 and 3 until we fully migrate.
ref #10326