netty5/transport-native-epoll/src/main/java/io/netty/channel/epoll
Nick Hill 5384bbcf85 Epoll: Don't wake event loop when splicing (#9354)
Motivation

I noticed this while looking at something else.
AbstractEpollStreamChannel::spliceQueue is an MPSC queue but only
accessed from the event loop. So it could be just changed to e.g. an
ArrayDeque. This PR instead reverts to using is as an MPSC queue to
avoid dispatching a task to the EL, as appears was the original
intention.

Modification

Change AbstractEpollStreamChannel::spliceQueue to be volatile and lazily
initialized via double-checked locking. Add tasks directly to the queue
from the public methods rather than possibly waking the EL just to
enqueue.

An alternative is just to change PlatformDependent.newMpscQueue() to new
ArrayDeque() and be done with it :)

Result

Less disruptive channel/fd-splicing.
2019-07-12 18:06:26 +02:00
..
AbstractEpollChannel.java remove unused imports (#9287) 2019-06-26 21:08:31 +02:00
AbstractEpollServerChannel.java Epoll and Kqueue shouldn't read by default (#8024) 2018-06-15 10:28:50 +02:00
AbstractEpollStreamChannel.java Epoll: Don't wake event loop when splicing (#9354) 2019-07-12 18:06:26 +02:00
Epoll.java Change the netty.io homepage scheme(http -> https) (#9344) 2019-07-09 21:09:42 +02:00
EpollChannelConfig.java Avoid repeating the same field and hiding it (#8335) 2018-09-28 17:37:14 +02:00
EpollChannelOption.java Allow to configure socket option SO_BUSY_POLL (#8268) 2018-09-07 20:50:51 +02:00
EpollDatagramChannel.java Correctly detect InternetProtocolFamily when EpollDatagramChannel is created with existing FileDescriptor (#9185) 2019-05-26 20:22:55 +02:00
EpollDatagramChannelConfig.java Add support for loopbackmode and accessing the configured interface when using epoll native transport with multicast (#9218) 2019-06-07 13:44:06 -07:00
EpollDomainSocketChannel.java Enforce writeSpinCount to limit resource consumption per socket (#7478) 2017-12-07 16:00:52 -08:00
EpollDomainSocketChannelConfig.java Remove static wildcard imports in EpollDomainSocketChannelConfig (#9066) 2019-04-18 07:33:44 +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
EpollEventLoop.java Make EventLoopTaskQueueFactory a top-level interface 2019-06-22 07:38:03 +02:00
EpollEventLoopGroup.java Make EventLoopTaskQueueFactory a top-level interface 2019-06-22 07:38:03 +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:14:09 +02:00
EpollRecvByteAllocatorStreamingHandle.java Update to new checkstyle plugin (#8777) (#8780) 2019-01-25 11:58:42 +01:00
EpollServerChannelConfig.java All override methods must be added @override (#9285) 2019-06-27 13:51:26 +02:00
EpollServerDomainSocketChannel.java New native transport for kqueue 2017-05-03 09:53:22 -07:00
EpollServerSocketChannel.java Correctly handle connect/disconnect in EpollDatagramChannel / KQueueDatagramChannel 2017-08-04 09:22:53 +02:00
EpollServerSocketChannelConfig.java Avoid repeating the same field and hiding it (#8335) 2018-09-28 17:37:14 +02:00
EpollSocketChannel.java Correctly handle connect/disconnect in EpollDatagramChannel / KQueueDatagramChannel 2017-08-04 09:22:53 +02: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 remove unused imports (#9287) 2019-06-26 21:08:31 +02:00
Native.java Added UDP multicast (with caveats: getInterface, getNetworkInterface, block or loopback-mode-disabled operations). 2019-05-25 08:00:16 +02:00
NativeDatagramPacketArray.java Reduce direct memory overhead per EpollEventLoop when using EpollDatagramChannel (#8825) 2019-02-02 07:10:02 +01: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 New native transport for kqueue 2017-05-03 09:53:22 -07:00