It seems that with O_POOL option and epoll support, onion will use the same epollfd in multi-thread. In level triggered mode (default), if the thread wake up from epoll_wait not read the data immediately or with some delay, other thread may also wake up and read some of the data, which will lead to logic error. So, I think it's reasonable to use edge triggered mode (EPOLLET) for client fd.
It seems that with O_POOL option and epoll support, onion will use the same epollfd in multi-thread. In level triggered mode (default), if the thread wake up from epoll_wait not read the data immediately or with some delay, other thread may also wake up and read some of the data, which will lead to logic error. So, I think it's reasonable to use edge triggered mode (EPOLLET) for client fd.