f6c84541be
Motivation There is a race condition when shutting down the event loop where the eventFd write performed in the wakeup() method may actually hit a different fd if it's closed and reassigned in the meantime. This was already encountered and addressed in the epoll case. Modifications Similar to what's done for epoll, in IOUringEventLoop: - Reinstate pendingWakeup flag which tracks when there is a wakeup pending (CAS of nextWakeupNanos performed by other thread in the wakeup() method) - Add logic to the cleanup() method to wait for corresponding READ CQE before closing the eventFd - Remove unused fields from IOUringCompletionQueue (cleanup) Result No event loop shutdown race
Netty io_uring
The new io_uring interface added to the Linux Kernel 5.1 is a high I/O performance scalable interface for fully asynchronous Linux syscalls
Requirements:
- x86-64 processor
- at least 5.9-rc4
- to run the tests, you have to increase memlock(default 64K)
See our wiki page.