[#2931] Only cancel SelectionKey if connection is not pending
Motivation: We must only cancel the SelectionKey if the connection is not pending while try to workaround the epoll bug, otherwise we may fail to notify the future later. Modifications: Check if the connection is pending before cancel the SelectionKey. Result: Only cancel correct SelectionKeys and so also make sure the futures are notified.
This commit is contained in:
parent
6d3bb59598
commit
c46b11f1ad
@ -219,7 +219,10 @@ abstract class AbstractNioSelector implements NioSelector {
|
||||
SelectableChannel ch = key.channel();
|
||||
try {
|
||||
if (ch instanceof DatagramChannel && !ch.isOpen() ||
|
||||
ch instanceof SocketChannel && !((SocketChannel) ch).isConnected()) {
|
||||
ch instanceof SocketChannel && !((SocketChannel) ch).isConnected() &&
|
||||
// Only cancel if the connection is not pending
|
||||
// See https://github.com/netty/netty/issues/2931
|
||||
!((SocketChannel) ch).isConnectionPending()) {
|
||||
notConnected = true;
|
||||
// cancel the key just to be on the safe side
|
||||
key.cancel();
|
||||
|
Loading…
x
Reference in New Issue
Block a user