netty5/transport-native-epoll/src/main/java/io/netty/channel/epoll
Scott Mitchell 441aa4c575 EPOLL ET Missed Reads
Motivation:
bfbef036a8 made EPOLL respect autoRead while in ET mode. However it is possible that we may miss data pending on the RECV queue if autoRead is off. This is because maybeMoreDataToRead is updated after fireChannelRead and if a user calls read() from here maybeMoreDataToRead will be false because it is updated after the fireChannelRead call. The way maybeMoreDataToRead was updated also causes a single channel to continuously read on the event loop and not relinquish and give other channels to try reading.

Modifications:
- Ensure maybeMoreDataToRead is always set after all user events, and is evaluated with readPending to execute a epollInReady on the EventLoop
- Combine the checkResetEpollIn and maybeMoreDataToRead logic to invoke a epollInReady later into the epollInFinally method due to similar responsibilities
- Update unit tests to reflect the user calling read() on the event loop from channelRead()

Result:
EPOLL ET with autoRead set to false will not leave data on the RECV queue.
2016-04-01 13:06:19 -07:00
..
AbstractEpollChannel.java EPOLL ET Missed Reads 2016-04-01 13:06:19 -07:00
AbstractEpollServerChannel.java EPOLL ET Missed Reads 2016-04-01 13:06:19 -07:00
AbstractEpollStreamChannel.java EPOLL ET Missed Reads 2016-04-01 13:06:19 -07:00
Epoll.java Epoll.isAvailable() must return false if sun.misc.Unsafe is not present. 2016-02-06 09:59:12 +01:00
EpollChannelConfig.java [#3806] Setting WRITE_BUFFER_LOW_WATER_MARK before WRITE_BUFFER_HIGH_WATER_MARK results in an internal Exception 2016-03-31 13:44:44 +02:00
EpollChannelOption.java [#5029] Fix type of EpollChannelOption.TCP_QUICKACK 2016-03-18 01:08:13 +01:00
EpollDatagramChannel.java EPOLL ET Missed Reads 2016-04-01 13:06:19 -07:00
EpollDatagramChannelConfig.java [#3806] Setting WRITE_BUFFER_LOW_WATER_MARK before WRITE_BUFFER_HIGH_WATER_MARK results in an internal Exception 2016-03-31 13:44:44 +02:00
EpollDomainSocketChannel.java EPOLL ET Missed Reads 2016-04-01 13:06:19 -07:00
EpollDomainSocketChannelConfig.java [#3806] Setting WRITE_BUFFER_LOW_WATER_MARK before WRITE_BUFFER_HIGH_WATER_MARK results in an internal Exception 2016-03-31 13:44:44 +02:00
EpollEventArray.java Faster event processing when epoll transport is used 2015-02-07 08:22:46 +01:00
EpollEventLoop.java EPOLL SelectStrategy 2016-03-30 15:11:35 -07:00
EpollEventLoopGroup.java EPOLL SelectStrategy 2016-03-30 15:11:35 -07:00
EpollMode.java Allow to change epoll mode 2015-02-04 21:37:34 +01:00
EpollRecvByteAllocatorHandle.java EPOLL ET Missed Reads 2016-04-01 13:06:19 -07:00
EpollRecvByteAllocatorStreamingHandle.java EPOLL ET AutoRead 2016-03-11 07:42:30 -08:00
EpollServerChannelConfig.java [#3806] Setting WRITE_BUFFER_LOW_WATER_MARK before WRITE_BUFFER_HIGH_WATER_MARK results in an internal Exception 2016-03-31 13:44:44 +02:00
EpollServerDomainSocketChannel.java Decouple Unix from Linux in Native Transport 2015-11-02 12:29:44 -08:00
EpollServerSocketChannel.java Cleanup transport-native-epoll code. 2016-03-23 10:59:42 +01:00
EpollServerSocketChannelConfig.java [#3806] Setting WRITE_BUFFER_LOW_WATER_MARK before WRITE_BUFFER_HIGH_WATER_MARK results in an internal Exception 2016-03-31 13:44:44 +02:00
EpollSocketChannel.java ChannelConfig operations should wrap ClosedChannelException if Channel was closed before. 2016-03-15 14:47:39 +01:00
EpollSocketChannelConfig.java [#3806] Setting WRITE_BUFFER_LOW_WATER_MARK before WRITE_BUFFER_HIGH_WATER_MARK results in an internal Exception 2016-03-31 13:44:44 +02:00
EpollTcpInfo.java [#3112] Add supprt for TCP_INFO when using EpollSocketChannel 2015-01-27 07:06:38 +01:00
IovArray.java Not try to write more then Integer.MAX_VALUE / SSIZE_MAX via writev 2015-05-21 12:02:10 +02:00
Native.java ChannelConfig operations should wrap ClosedChannelException if Channel was closed before. 2016-03-15 14:47:39 +01:00
NativeDatagramPacketArray.java Decouple Unix from Linux in Native Transport 2015-11-02 12:29:44 -08:00
NativeStaticallyReferencedJniMethods.java Native EPOLL Library Allows Shading 2016-02-03 14:40:28 -08:00
package-info.java Introduce a native transport for linux using epoll ET 2014-02-15 22:44:56 +01:00
TcpMd5Util.java ChannelConfig operations should wrap ClosedChannelException if Channel was closed before. 2016-03-15 14:47:39 +01:00