Depending upon the OS implementation the standard system calls for FDs may result in blocking when those FDs are backed by on disk files (even if the FD is in non-blocking mode). Some OSes offer an asynchronous file API to avoid these issues and we should investigate using this in our native transports.
Datastax has async file code in a Netty fork and is eager to contribute it back to Netty core (if it makes sense to have it in netty).
jlink / jmod / modularized jar would be suitable for these os-specific requirements
including iocp(win), epoll(linux) and kqueue(mac)
Maybe its time to create a true netty-native project
Just thinking loud: It would be great to allow injecting specialized I/O scheduler policies (a-la https://www.scylladb.com/2018/04/19/scylla-i-o-scheduler-3/) accessible on user-level with a mechanism similar to what Netty already deliver with the writeabilityChange event/isWriteable query, to avoid I/O submissions to block or allocate native space on kernel-side, depending on the filesystem used...
a few years ago, I tried to contribute this codebase into netty, at the time it did not make much sense since there was only a single place where the native bits could land on:
https://github.com/apache/activemq-artemis-native
perhaps we could take a fresh look into what datastax has, and merge the concepts, and perhaps do a new thing using netty schedulers to perform the writes
Most helpful comment
jlink / jmod / modularized jar would be suitable for these os-specific requirements
including iocp(win), epoll(linux) and kqueue(mac)
Maybe its time to create a true netty-native project