redis / lettuce

Advanced Java Redis client for thread-safe sync, async, and reactive usage. Supports Cluster, Sentinel, Pipelining, and codecs.
https://lettuce.io
MIT License
5.3k stars 949 forks source link

Use epoll over io_uring channel for Unix Domain Sockets #2791

Closed atakavci closed 3 months ago

atakavci commented 3 months ago

fix for the issue #2790

the current implementation uses io_uring as preferred. the change contains switch of precedence to use epoll over io_uring. I did some reading on the performance comparisons of io_uring and epoll; io_uring is considered faster than epoll in some cases and not in others. -> https://github.com/axboe/liburing/issues/536

Since we are changing default behavior when both of them are available, there will be some performance change for clients that have both in runtime. i cant evaluate exactly how big the impact is and/or how many client will be impacted. happy to hear any comments.

mp911de commented 3 months ago

Thank you for your contribution. That's merged, polished, and backported now.