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
parent 58911c1482
commit 5bb535e78a
3 changed files with 9 additions and 9 deletions

View File

@ -564,9 +564,9 @@ abstract class AbstractEpollChannel extends AbstractChannel implements UnixChann
if (connectTimeoutMillis > 0) {
connectTimeoutFuture = eventLoop().schedule(() -> {
ChannelPromise connectPromise = AbstractEpollChannel.this.connectPromise;
ConnectTimeoutException cause =
new ConnectTimeoutException("connection timed out: " + remoteAddress);
if (connectPromise != null && connectPromise.tryFailure(cause)) {
if (connectPromise != null && !connectPromise.isDone()
&& connectPromise.tryFailure(new ConnectTimeoutException(
"connection timed out: " + remoteAddress))) {
close(voidPromise());
}
}, connectTimeoutMillis, TimeUnit.MILLISECONDS);

View File

@ -553,9 +553,9 @@ abstract class AbstractKQueueChannel extends AbstractChannel implements UnixChan
if (connectTimeoutMillis > 0) {
connectTimeoutFuture = eventLoop().schedule(() -> {
ChannelPromise connectPromise = AbstractKQueueChannel.this.connectPromise;
ConnectTimeoutException cause =
new ConnectTimeoutException("connection timed out: " + remoteAddress);
if (connectPromise != null && connectPromise.tryFailure(cause)) {
if (connectPromise != null && !connectPromise.isDone()
&& connectPromise.tryFailure(new ConnectTimeoutException(
"connection timed out: " + remoteAddress))) {
close(voidPromise());
}
}, connectTimeoutMillis, TimeUnit.MILLISECONDS);

View File

@ -240,9 +240,9 @@ public abstract class AbstractNioChannel extends AbstractChannel {
if (connectTimeoutMillis > 0) {
connectTimeoutFuture = eventLoop().schedule(() -> {
ChannelPromise connectPromise = AbstractNioChannel.this.connectPromise;
ConnectTimeoutException cause =
new ConnectTimeoutException("connection timed out: " + remoteAddress);
if (connectPromise != null && connectPromise.tryFailure(cause)) {
if (connectPromise != null && !connectPromise.isDone()
&& connectPromise.tryFailure(new ConnectTimeoutException(
"connection timed out: " + remoteAddress))) {
close(voidPromise());
}
}, connectTimeoutMillis, TimeUnit.MILLISECONDS);