-
Notifications
You must be signed in to change notification settings - Fork 656
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
RDMA builtin support #1209
base: unstable
Are you sure you want to change the base?
RDMA builtin support #1209
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## unstable #1209 +/- ##
============================================
- Coverage 70.73% 70.71% -0.03%
============================================
Files 116 117 +1
Lines 63271 63341 +70
============================================
+ Hits 44757 44792 +35
- Misses 18514 18549 +35
|
35884e2
to
047c7ec
Compare
@valkey-io/core-team Please approve. This adds It is a step towards official (non-experimantal) RDMA support. I already merged the RDMA fork-safety here: #1244. It makes sure the server doesn't crash if we try to talk to an RDMA client from a forked child process. |
Hi @valkey-io/core-team |
I vote for dropping the module packaging. Modularity is what we need and we have it here for RDMA. |
I believe it's safe to drop the RDMA module because it's experimental, but I'm not sure about the TLS module. Maybe someone is using it? Maybe we should drop it in a major version (9.0?). The potential benefit of module is that you don't need OpenSSL installed to start Valkey, as long as you don't load the module. If we ship binary releases or containers with bundled modules, they can be used also by those who don't have or want TLS. Examples are embedded system, IoT devices, etc. We've already talked about packaging binaries with buldled modules like (bloom, json). |
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 didn't review fully. Just the interface changes.
Originally, special config 'bind' is used for socket and TLS, however multiple addresses handling is also workable for RDMA(QUIC in the future). Abstract bind option as helper functions to apply more connection types. rewriteConfigBindOption is a local function, declare it as 'static' function. Signed-off-by: zhenwei pi <[email protected]>
Socket family use close() syscall to close listener, however RDMA has another style. Use an abstract function handler instead of hard code syscall style. Signed-off-by: zhenwei pi <[email protected]>
047c7ec
to
b8378df
Compare
Move 4 parameters from valkey-rdma.so to valkey-server, keep RDMA listener similar to TCP/TLS. Also prepare to build Valkey Over RDMA into builtin. Signed-off-by: zhenwei pi <[email protected]>
Support RDMA builtin and module together. To build a builtin version: $ make BUILD_RDMA=yes Or build it by cmake: $ cmake .. -DBUILD_RDMA=yes Signed-off-by: zhenwei pi <[email protected]>
b8378df
to
3bdd658
Compare
Hi @zuiderkwast |
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.
Let's wait for a core team majority decision before merge since it's an interface change.
Next time, can you avoid force-push and instead just push more commits? It's easier to see what's changed since last review. We squash-merge in the end anyway, normally.
OK. |
@valkey-io/core-team This adds The module style configs |
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.
Not a full review, but LGTM.
Co-authored-by: Binbin <[email protected]> Signed-off-by: zhenwei pi <[email protected]>
Apply suggestion from Binbin. Co-authored-by: Binbin <[email protected]> Signed-off-by: zhenwei pi <[email protected]>
Apply suggestion from Binbin. Co-authored-by: Binbin <[email protected]> Signed-off-by: zhenwei pi <[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.
Directionally I'm inclined, I mostly just had some questions about the configs and documentation.
Signed-off-by: zhenwei pi <[email protected]>
Signed-off-by: zhenwei pi <[email protected]>
Signed-off-by: zhenwei pi <[email protected]>
Signed-off-by: zhenwei pi <[email protected]>
Hi,
There are several patches in this PR:
bind
option is a special config,socket
andtls
are using the same one. However RDMA uses the similar style but different one. Use a bit abstract work to make it flexible for bothsocket
andRDMA
. Even for QUIC in the future.--rdma-bind
and--rdma-port
style instead of module parameters. The module style configrdma.bind
andrdma.port
are removed.make BUILD_RDMA=yes
. module style is still kept for now. Once module style is decided to drop, I volunteer to do it for TLS and RDMA together.Each patch has independent functionality, also been tested by CI and local commands, so request no-squash merge for this PR.