Skip to content

Commit

Permalink
ConnectTimeoutException: include timeout value (#13719)
Browse files Browse the repository at this point in the history
Motivation:

When transport throws `ConnectTimeoutException`, it's useful to know
what was the pre-configured value that triggered the timeout.

Modifications:

- Enhance exception message for all `ConnectTimeoutException` use-cases
to include `connectTimeoutMillis` value;

Result:

Users can understand what was a pre-configured value of
`connectTimeoutMillis` that triggered `ConnectTimeoutException`.
  • Loading branch information
idelpivnitskiy committed Dec 7, 2023
1 parent 1e2b955 commit e2c706a
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -604,15 +604,16 @@ public void connect(
requestedRemoteAddress = remoteAddress;

// Schedule connect timeout.
int connectTimeoutMillis = config().getConnectTimeoutMillis();
final int connectTimeoutMillis = config().getConnectTimeoutMillis();
if (connectTimeoutMillis > 0) {
connectTimeoutFuture = eventLoop().schedule(new Runnable() {
@Override
public void run() {
ChannelPromise connectPromise = AbstractEpollChannel.this.connectPromise;
if (connectPromise != null && !connectPromise.isDone()
&& connectPromise.tryFailure(new ConnectTimeoutException(
"connection timed out: " + remoteAddress))) {
"connection timed out after " + connectTimeoutMillis + " ms: " +
remoteAddress))) {
close(voidPromise());
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -562,15 +562,16 @@ public void connect(
requestedRemoteAddress = remoteAddress;

// Schedule connect timeout.
int connectTimeoutMillis = config().getConnectTimeoutMillis();
final int connectTimeoutMillis = config().getConnectTimeoutMillis();
if (connectTimeoutMillis > 0) {
connectTimeoutFuture = eventLoop().schedule(new Runnable() {
@Override
public void run() {
ChannelPromise connectPromise = AbstractKQueueChannel.this.connectPromise;
if (connectPromise != null && !connectPromise.isDone()
&& connectPromise.tryFailure(new ConnectTimeoutException(
"connection timed out: " + remoteAddress))) {
"connection timed out after " + connectTimeoutMillis + " ms: " +
remoteAddress))) {
close(voidPromise());
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,15 +252,16 @@ public final void connect(
requestedRemoteAddress = remoteAddress;

// Schedule connect timeout.
int connectTimeoutMillis = config().getConnectTimeoutMillis();
final int connectTimeoutMillis = config().getConnectTimeoutMillis();
if (connectTimeoutMillis > 0) {
connectTimeoutFuture = eventLoop().schedule(new Runnable() {
@Override
public void run() {
ChannelPromise connectPromise = AbstractNioChannel.this.connectPromise;
if (connectPromise != null && !connectPromise.isDone()
&& connectPromise.tryFailure(new ConnectTimeoutException(
"connection timed out: " + remoteAddress))) {
"connection timed out after " + connectTimeoutMillis + " ms: " +
remoteAddress))) {
close(voidPromise());
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -300,13 +300,15 @@ protected void doConnect(SocketAddress remoteAddress,
SocketUtils.bind(socket, localAddress);
}

final int connectTimeoutMillis = config().getConnectTimeoutMillis();
boolean success = false;
try {
SocketUtils.connect(socket, remoteAddress, config().getConnectTimeoutMillis());
SocketUtils.connect(socket, remoteAddress, connectTimeoutMillis);
activate(socket.getInputStream(), socket.getOutputStream());
success = true;
} catch (SocketTimeoutException e) {
ConnectTimeoutException cause = new ConnectTimeoutException("connection timed out: " + remoteAddress);
ConnectTimeoutException cause = new ConnectTimeoutException("connection timed out after " +
connectTimeoutMillis + " ms: " + remoteAddress);
cause.setStackTrace(e.getStackTrace());
throw cause;
} finally {
Expand Down

0 comments on commit e2c706a

Please sign in to comment.