netty5/transport-native-io_uring
Nick Hill f6c84541be
Close IOUringEventLoop wakeup/eventfd close shutdown race (#10615)
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
2020-09-28 08:47:23 +02:00
..

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.