netty5/transport-native-epoll/src/test/java/io/netty/channel/epoll
Scott Mitchell ce241bd11e Epoll flush/writabilityChange deadlock
Motivation:
b215794de3 recently introduced a change in behavior where writeSpinCount provided a limit for how many write operations were attempted per flush operation. However when the write quantum was meet the selector write flag was not cleared, and the channel unsafe flush0 method has an optimization which prematurely exits if the write flag is set. This may lead to no write progress being made under the following scenario:
- flush is called, but the socket can't accept all data, we set the write flag
- the selector wakes us up because the socket is writable, we write data and use the writeSpinCount quantum
- we then schedule a flush() on the EventLoop to execute later, however it the flush0 optimization prematurely exits because the write flag is still set

In this scenario the socket is still writable so the EventLoop may never notify us that the socket is writable, and therefore we may never attempt to flush data to the OS.

Modifications:
- When the writeSpinCount quantum is exceeded we should clear the selector write flag

Result:
Fixes https://github.com/netty/netty/issues/7729
2018-02-20 11:40:58 +01:00
..
EpollAbstractDomainSocketEchoTest.java New native transport for kqueue 2017-05-03 09:53:22 -07:00
EpollChannelConfigTest.java Use ChannelException when ChannelConfig operation fails in epoll. 2015-08-28 21:38:35 +02:00
EpollCompositeBufferGatheringWriteTest.java IovArray#add return value resulted in more ByteBufs being added during iteration 2018-01-04 08:04:32 -08:00
EpollDatagramConnectNotExistsTest.java Correctly handle connect/disconnect in EpollDatagramChannel / KQueueDatagramChannel 2017-08-04 09:22:53 +02:00
EpollDatagramUnicastTest.java [#2377] Implement epoll based DatagramChannel 2014-04-16 15:05:43 +02:00
EpollDetectPeerCloseWithoutReadTest.java KQueue detect peer close without EVFILT_READ 2017-08-18 11:00:18 -07:00
EpollDomainSocketEchoTest.java Add support for Unix Domain Sockets when using native epoll transport 2015-02-04 15:39:41 +01:00
EpollDomainSocketFdTest.java Update tests to not use TestUtils.getFreePort() and so ensure we not try to use a port that is used by the system in the meantime. 2017-07-20 08:25:37 +02:00
EpollDomainSocketFileRegionTest.java Add support for Unix Domain Sockets when using native epoll transport 2015-02-04 15:39:41 +01:00
EpollDomainSocketFixedLengthEchoTest.java Add support for Unix Domain Sockets when using native epoll transport 2015-02-04 15:39:41 +01:00
EpollDomainSocketGatheringWriteTest.java Add support for Unix Domain Sockets when using native epoll transport 2015-02-04 15:39:41 +01:00
EpollDomainSocketObjectEchoTest.java Add support for Unix Domain Sockets when using native epoll transport 2015-02-04 15:39:41 +01:00
EpollDomainSocketSslEchoTest.java Add support for Unix Domain Sockets when using native epoll transport 2015-02-04 15:39:41 +01:00
EpollDomainSocketSslGreetingTest.java Add support for Unix Domain Sockets when using native epoll transport 2015-02-04 15:39:41 +01:00
EpollDomainSocketStartTlsTest.java Add support for Unix Domain Sockets when using native epoll transport 2015-02-04 15:39:41 +01:00
EpollDomainSocketStringEchoTest.java Add support for Unix Domain Sockets when using native epoll transport 2015-02-04 15:39:41 +01:00
EpollETSocketAutoReadTest.java Make OIO/NIO/EPOLL autoReadClear consistent 2016-04-06 12:32:14 -07:00
EpollETSocketConditionalWritabilityTest.java Epoll flush/writabilityChange deadlock 2018-02-20 11:40:58 +01:00
EpollETSocketExceptionHandlingTest.java Make OIO/NIO/EPOLL autoReadClear consistent 2016-04-06 12:32:14 -07:00
EpollETSocketHalfClosed.java EpollRecvByteAllocatorHandle doesn't inform delegate of more data 2017-02-13 17:42:24 -08:00
EpollETSocketReadPendingTest.java Make OIO/NIO/EPOLL autoReadClear consistent 2016-04-06 12:32:14 -07:00
EpollLTSocketAutoReadTest.java Make OIO/NIO/EPOLL autoReadClear consistent 2016-04-06 12:32:14 -07:00
EpollLTSocketConditionalWritabilityTest.java Epoll flush/writabilityChange deadlock 2018-02-20 11:40:58 +01:00
EpollLTSocketExceptionHandlingTest.java Make OIO/NIO/EPOLL autoReadClear consistent 2016-04-06 12:32:14 -07:00
EpollLTSocketHalfClosed.java EpollRecvByteAllocatorHandle doesn't inform delegate of more data 2017-02-13 17:42:24 -08:00
EpollLTSocketReadPendingTest.java Make OIO/NIO/EPOLL autoReadClear consistent 2016-04-06 12:32:14 -07:00
EpollReuseAddrTest.java Update tests to not use TestUtils.getFreePort() and so ensure we not try to use a port that is used by the system in the meantime. 2017-07-20 08:25:37 +02:00
EpollServerSocketChannelConfigTest.java EpollSocketChannelConfig.getOptions() must not throw if TCP_FASTOPEN_CONNECT is not supported 2017-11-16 14:07:54 +01:00
EpollSocketChannelConfigTest.java EpollSocketChannelConfig.getOptions() must not throw if TCP_FASTOPEN_CONNECT is not supported 2017-11-16 14:07:54 +01:00
EpollSocketChannelNotYetConnectedTest.java Throw correct NotYetConnectedException when ENOTCONN errno is set 2016-08-24 07:41:24 +02:00
EpollSocketChannelTest.java Fix assertion error when closing / shutdown native channel and SO_LINGER is set. 2017-09-18 14:46:37 -07:00
EpollSocketCloseForciblyTest.java Only try to deregister from EventLoop when the native Channel was registered before. 2017-05-24 13:19:18 +02:00
EpollSocketConnectionAttemptTest.java [#3785] Correctly handle connection refused with native transport 2015-05-27 13:38:50 +02:00
EpollSocketConnectTest.java Ensure EpollSocketChannel.localAddress() returns correct address after connect(...) call. 2016-04-09 19:04:45 +02:00
EpollSocketEchoTest.java Perform cross-tests between NIO and epoll transport 2014-03-17 10:35:48 +09:00
EpollSocketFileRegionTest.java Perform cross-tests between NIO and epoll transport 2014-03-17 10:35:48 +09:00
EpollSocketFixedLengthEchoTest.java Perform cross-tests between NIO and epoll transport 2014-03-17 10:35:48 +09:00
EpollSocketGatheringWriteTest.java Perform cross-tests between NIO and epoll transport 2014-03-17 10:35:48 +09:00
EpollSocketMultipleConnectTest.java Make NIO and EPOLL transport connect errors more consistent with the JDK 2016-08-27 20:57:36 +02:00
EpollSocketObjectEchoTest.java Perform cross-tests between NIO and epoll transport 2014-03-17 10:35:48 +09:00
EpollSocketRstTest.java EPOLL SO_LINGER=0 sends FIN+RST 2016-03-16 22:35:04 -07:00
EpollSocketShutdownOutputByPeerTest.java DuplexChannel to support shutdownInput 2016-05-18 09:11:49 +02:00
EpollSocketShutdownOutputBySelfTest.java DuplexChannel to support shutdownInput 2016-05-18 09:11:49 +02:00
EpollSocketSslEchoTest.java Test TLS renegotiation with explicit cipher suite change 2014-12-12 17:49:16 +09:00
EpollSocketSslGreetingTest.java Add an OpenSslEngine and the universal API for enabling SSL 2014-05-18 02:54:06 +09:00
EpollSocketStartTlsTest.java Add an OpenSslEngine and the universal API for enabling SSL 2014-05-18 02:54:06 +09:00
EpollSocketStringEchoTest.java Perform cross-tests between NIO and epoll transport 2014-03-17 10:35:48 +09:00
EpollSocketTcpMd5Test.java Use smaller connect timeout to speed up tests. 2016-03-06 17:47:38 +01:00
EpollSocketTest.java KQueueSocket#setTrafficClass exceptions 2017-05-18 11:26:27 -07:00
EpollSocketTestPermutation.java Correctly handle connect/disconnect in EpollDatagramChannel / KQueueDatagramChannel 2017-08-04 09:22:53 +02:00
EpollSpliceTest.java Update tests to not use TestUtils.getFreePort() and so ensure we not try to use a port that is used by the system in the meantime. 2017-07-20 08:25:37 +02:00
EpollTest.java [#2598] Add Epoll.isAvailable() which allows to check if epoll can be used. 2014-06-26 12:27:09 +02:00
NativeTest.java Decouple Unix from Linux in Native Transport 2015-11-02 12:29:44 -08:00