-
Notifications
You must be signed in to change notification settings - Fork 653
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
Adds Light-weight cluster bus header for pubsub message. #654
Conversation
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## unstable #654 +/- ##
============================================
+ Coverage 70.08% 70.34% +0.26%
============================================
Files 112 112
Lines 60587 61400 +813
============================================
+ Hits 42461 43192 +731
- Misses 18126 18208 +82
|
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.
This is good progress!
I didn't comment on any details since it's still a draft.
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
I have updated the draft allowing multiple payloads and new struct for publish message, would be adding tests and cleaning up 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.
High level comments. Good progress 👍 .
Signed-off-by: Roshan Khatri <[email protected]>
This reverts commit 5886313. Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
d752179
to
e756bc9
Compare
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
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.
This looks pretty good!
Did you try any tests yet? Maybe there will be no visible behavior change, so maybe no need for new tests, except for the number of bytes sent over the network. Do we have any stats for that we can verify in a test case?
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
be2268d
to
3dff6c4
Compare
Signed-off-by: Roshan Khatri <[email protected]>
6908938
to
0a91a05
Compare
Signed-off-by: Roshan Khatri <[email protected]>
4 types (publish, spublish, light multi-publish, light multi-spublish) would suffice as we will hard-code the count value to 1 in 8.0, which will allow us to introduce the multi-message feature without a wire protocol change.
Agreed. I don't think we can mandate the "N+1" upgrade. Valkey 7.2 users would have the same issue regardless, when upgrading to 8.2+. Zooming out a bit more, I think this should be the general rule for all new features (sure, there will be exceptions, but hopefully rare). Supporting new features in a cluster of mixed versions adds a whole new dimension of complexity hence opening a can of worms for both development and testing IMO. There needs to be a very strong reason to go down that path. |
521c912
to
b0d2a49
Compare
Signed-off-by: Roshan Khatri <[email protected]>
b0d2a49
to
4dbc07d
Compare
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
Signed-off-by: Roshan Khatri <[email protected]>
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 @roshkhatri! I think we are very close. Some more nits for fit&finish. Let's aim at merging it in the next or two?
Signed-off-by: Roshan Khatri <[email protected]>
4427415
to
b31150f
Compare
Signed-off-by: Roshan Khatri <[email protected]>
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.
LGTM. Thanks @roshkhatri!
@PingXie Thanks for the review! @zuiderkwast / @madolson Do you folks want to take a look further or is it good to merge ? |
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.
Looks good. Just commented on some very minor things.
This implementation got a lot smaller, which is good, but I notice we'll not be able to add an mpublish cluster bus message without another protocol change, but we likely won't want that anyway.
Signed-off-by: Roshan Khatri <[email protected]>
@PingXie @zuiderkwast @hpatro,Thank you so much for you support and review! Let's get it merged today/ASAP!🚀 |
@PingXie @zuiderkwast @hpatro @madolson Do you have any other questions / comments? It would be great to get this merged for 8.0 release. |
Now the commit message of the commit that got merged says the light pubsub message supports multiple payloads. That's unfortunate, since it's not true. @roshkhatri please update the PR description when you have time, for future reference. The will probably be linked from the release notes. |
Updated the PR description. LMK if you think anything else needs to be added. |
Adds light-weight cluster bus header for pubsub message. Closes #557.
This also supports sending to and receiving non-light messages from older versions of the engine.
This light-weight header is defined below.
The PR also adds a special iterator for iterating over a
list
or adict
depending on the type of iterator initialized. This iterator is specially implemented here to go over thedict
of all nodes present in the cluster for non-shaded pubsub and alist
of nodes in a specific shard for sharded pubsub. This also reduces the code duplications.