Only create ConnectTimeoutException if really needed (#10595)

Motivation:

Creating exceptions is expensive so we should only do so if really needed.

Modifications:

Only create the ConnectTimeoutException if we really need it.

Result:

Less overhead
This commit is contained in:
Norman Maurer 2020-09-21 21:32:20 +02:00 committed by GitHub
parent 79a7c157a3
commit 71d034593f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 9 deletions

View File

@ -31,6 +31,7 @@ import io.netty.channel.ChannelPromise;
import io.netty.channel.ConnectTimeoutException; import io.netty.channel.ConnectTimeoutException;
import io.netty.channel.EventLoop; import io.netty.channel.EventLoop;
import io.netty.channel.RecvByteBufAllocator; import io.netty.channel.RecvByteBufAllocator;
import io.netty.channel.nio.AbstractNioChannel;
import io.netty.channel.socket.ChannelInputShutdownEvent; import io.netty.channel.socket.ChannelInputShutdownEvent;
import io.netty.channel.socket.ChannelInputShutdownReadComplete; import io.netty.channel.socket.ChannelInputShutdownReadComplete;
import io.netty.channel.socket.SocketChannelConfig; import io.netty.channel.socket.SocketChannelConfig;
@ -572,9 +573,9 @@ abstract class AbstractEpollChannel extends AbstractChannel implements UnixChann
@Override @Override
public void run() { public void run() {
ChannelPromise connectPromise = AbstractEpollChannel.this.connectPromise; ChannelPromise connectPromise = AbstractEpollChannel.this.connectPromise;
ConnectTimeoutException cause = if (connectPromise != null && !connectPromise.isDone()
new ConnectTimeoutException("connection timed out: " + remoteAddress); && connectPromise.tryFailure(new ConnectTimeoutException(
if (connectPromise != null && connectPromise.tryFailure(cause)) { "connection timed out: " + remoteAddress))) {
close(voidPromise()); close(voidPromise());
} }
} }

View File

@ -31,6 +31,7 @@ import io.netty.channel.ChannelPromise;
import io.netty.channel.ConnectTimeoutException; import io.netty.channel.ConnectTimeoutException;
import io.netty.channel.EventLoop; import io.netty.channel.EventLoop;
import io.netty.channel.RecvByteBufAllocator; import io.netty.channel.RecvByteBufAllocator;
import io.netty.channel.nio.AbstractNioChannel;
import io.netty.channel.socket.ChannelInputShutdownEvent; import io.netty.channel.socket.ChannelInputShutdownEvent;
import io.netty.channel.socket.ChannelInputShutdownReadComplete; import io.netty.channel.socket.ChannelInputShutdownReadComplete;
import io.netty.channel.socket.SocketChannelConfig; import io.netty.channel.socket.SocketChannelConfig;
@ -558,9 +559,9 @@ abstract class AbstractKQueueChannel extends AbstractChannel implements UnixChan
@Override @Override
public void run() { public void run() {
ChannelPromise connectPromise = AbstractKQueueChannel.this.connectPromise; ChannelPromise connectPromise = AbstractKQueueChannel.this.connectPromise;
ConnectTimeoutException cause = if (connectPromise != null && !connectPromise.isDone()
new ConnectTimeoutException("connection timed out: " + remoteAddress); && connectPromise.tryFailure(new ConnectTimeoutException(
if (connectPromise != null && connectPromise.tryFailure(cause)) { "connection timed out: " + remoteAddress))) {
close(voidPromise()); close(voidPromise());
} }
} }

View File

@ -258,9 +258,9 @@ public abstract class AbstractNioChannel extends AbstractChannel {
@Override @Override
public void run() { public void run() {
ChannelPromise connectPromise = AbstractNioChannel.this.connectPromise; ChannelPromise connectPromise = AbstractNioChannel.this.connectPromise;
ConnectTimeoutException cause = if (connectPromise != null && !connectPromise.isDone()
new ConnectTimeoutException("connection timed out: " + remoteAddress); && connectPromise.tryFailure(new ConnectTimeoutException(
if (connectPromise != null && connectPromise.tryFailure(cause)) { "connection timed out: " + remoteAddress))) {
close(voidPromise()); close(voidPromise());
} }
} }