-
Notifications
You must be signed in to change notification settings - Fork 105
refactor(io): Refactor network types into net::io modules, add runtime fallback for-uring #1191
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
base: main
Are you sure you want to change the base?
Conversation
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.
IMO it's a bit suspect to fallback to epoll by default if io-uring is unavailable due to potential performance loss that the user won't be made aware of.
They will be aware because we log an error when io-uring fails, so they see that it failed. |
d6f914d
to
069cdeb
Compare
Build Failed 😭 Build Id: f122d74e-f3e1-492f-a3f4-d1bbd4059ceb Status: FAILURE To get permission to view the Cloud Build view, join the quilkin-discuss Google Group. Filter with the Git Commit Development images are retained for at least 30 days. |
This PR fixes #1183 by refactoring the network listening code to allow for falling all the way back to epoll on Linux at runtime.
As part of that I've consolidated all our different IO backends into a single
net::io
module, and then I made a module for each of our different kinds of backends (polling, completion, NIC) and moved platform specific code there, that way more of the code can be compiled on macOS and Windows which makes development easier with more of the logic being shared.This should be a bit tidier with #1185 but I wanted to fix #1183 first.