netty5/transport-native-epoll/src/main/java/io/netty/channel/epoll
Nick Hill 0eb363de94 Close eventfd shutdown/wakeup race by closely tracking epoll edges (#9586) (#9612)
Motivation

This is another iteration of #9476.

Modifications

Instead of maintaining a count of all writes performed and then using
reads during shutdown to ensure all are accounted for, just set a flag
after each write and don't reset it until the corresponding event has
been returned from epoll_wait.

This requires that while a write is still pending we don't reset
wakenUp, i.e. continue to block writes from the wakeup() method.

Result

Race condition eliminated. Fixes #9362


Co-authored-by: Norman Maurer <norman_maurer@apple.com>
2019-09-27 09:55:44 +02:00
..
AbstractEpollChannel.java Correctly reset cached local and remote address when disconnect() is called (#9545) 2019-09-19 08:51:23 +02:00
AbstractEpollServerChannel.java migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00
AbstractEpollStreamChannel.java Remove extra checks to fix #9456 (#9523) 2019-08-30 10:40:04 +02:00
Epoll.java Change the netty.io homepage scheme(http -> https) (#9344) 2019-07-09 21:10:14 +02:00
EpollChannelConfig.java Epoll: Avoid redundant EPOLL_CTL_MOD calls (#9397) 2019-08-19 09:06:41 +02:00
EpollChannelOption.java Add support for recvmmsg when using epoll transport (#9509) 2019-09-03 09:35:21 +02:00
EpollDatagramChannel.java Correctly reset cached local and remote address when disconnect() is called (#9545) 2019-09-19 08:51:23 +02:00
EpollDatagramChannelConfig.java Add support for recvmmsg when using epoll transport (#9509) 2019-09-03 09:35:21 +02:00
EpollDomainSocketChannel.java Tighten contract between Channel and EventLoop by require the EventLoop on Channel construction. (#8587) 2019-01-14 20:11:13 +01:00
EpollDomainSocketChannelConfig.java Add *ReceiveBufferSize / *SendBufferSize methods to DomainSocketChannelConfig interface (#9602) 2019-09-26 08:58:22 +02:00
EpollEventArray.java Allow to use native transports when sun.misc.Unsafe is not present on… (#8231) 2018-08-29 19:36:33 +02:00
EpollEventLoopGroup.java remove unused import statement (#8792) 2019-01-28 16:50:15 +01:00
EpollHandler.java Close eventfd shutdown/wakeup race by closely tracking epoll edges (#9586) (#9612) 2019-09-27 09:55:44 +02:00
EpollMode.java Allow to change epoll mode 2015-02-04 21:37:34 +01:00
EpollRecvByteAllocatorHandle.java Have (Epoll|KQueue)RecvByteAllocatorHandle extend DelegatingHandle (#9060) 2019-04-16 09:21:43 +02:00
EpollRecvByteAllocatorStreamingHandle.java Update to new checkstyle plugin (#8777) 2019-01-24 16:24:19 +01:00
EpollRegistration.java Epoll: Avoid redundant EPOLL_CTL_MOD calls (#9397) 2019-08-19 09:06:41 +02:00
EpollServerChannelConfig.java All override methods must be added @override (#9285) 2019-06-27 13:52:06 +02:00
EpollServerDomainSocketChannel.java Tighten contract between Channel and EventLoop by require the EventLoop on Channel construction. (#8587) 2019-01-14 20:11:13 +01:00
EpollServerSocketChannel.java Make it possible to use a wrapped EventLoop with a Channel (#8677) 2019-01-17 09:17:51 +01:00
EpollServerSocketChannelConfig.java Avoid repeating the same field and hiding it (#8335) 2018-09-28 17:37:14 +02:00
EpollSocketChannel.java Make it possible to use a wrapped EventLoop with a Channel (#8677) 2019-01-17 09:17:51 +01:00
EpollSocketChannelConfig.java Avoid repeating the same field and hiding it (#8335) 2018-09-28 17:37:14 +02:00
EpollTcpInfo.java Correctly handle unsigned int values returned from TCP_INFO 2017-07-25 16:18:52 +02:00
LinuxSocket.java Add support for recvmmsg when using epoll transport (#9509) 2019-09-03 09:35:21 +02:00
Native.java Close eventfd shutdown/wakeup race by closely tracking epoll edges (#9586) (#9612) 2019-09-27 09:55:44 +02:00
NativeDatagramPacketArray.java Also support sendmmsg(...) on connected UDP channels when using native epoll transport (#9536) 2019-09-06 20:57:50 +02: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 migrate java8: use requireNonNull (#8840) 2019-02-04 10:32:25 +01:00