From f02582de4b03a255c16a28fd785494761a993dba Mon Sep 17 00:00:00 2001 From: Tim Brooks Date: Fri, 20 Sep 2019 11:09:36 -0600 Subject: [PATCH] Reduce a bind failure to trace logging (#46891) Due to recent changes in the nio transport, a failure to bind the server channel has started to be logged at an error level. This exception leads to an automatic retry on a different port, so it should only be logged at a trace level. --- .../java/org/elasticsearch/nio/ServerChannelContext.java | 4 +++- .../main/java/org/elasticsearch/transport/TcpTransport.java | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/libs/nio/src/main/java/org/elasticsearch/nio/ServerChannelContext.java b/libs/nio/src/main/java/org/elasticsearch/nio/ServerChannelContext.java index ec637a3b046..e598ec0929e 100644 --- a/libs/nio/src/main/java/org/elasticsearch/nio/ServerChannelContext.java +++ b/libs/nio/src/main/java/org/elasticsearch/nio/ServerChannelContext.java @@ -22,6 +22,7 @@ package org.elasticsearch.nio; import org.elasticsearch.common.concurrent.CompletableContext; import java.io.IOException; +import java.net.BindException; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.nio.channels.ServerSocketChannel; @@ -78,7 +79,8 @@ public class ServerChannelContext extends ChannelContext { rawChannel.bind(localAddress); bindContext.complete(null); } catch (IOException e) { - IOException exception = new IOException("Failed to bind server socket channel {localAddress=" + localAddress + "}.", e); + BindException exception = new BindException("Failed to bind server socket channel {localAddress=" + localAddress + "}."); + exception.initCause(e); bindContext.completeExceptionally(exception); throw exception; } diff --git a/server/src/main/java/org/elasticsearch/transport/TcpTransport.java b/server/src/main/java/org/elasticsearch/transport/TcpTransport.java index f0037bed5d0..170444c205f 100644 --- a/server/src/main/java/org/elasticsearch/transport/TcpTransport.java +++ b/server/src/main/java/org/elasticsearch/transport/TcpTransport.java @@ -618,7 +618,11 @@ public abstract class TcpTransport extends AbstractLifecycleComponent implements } protected void onServerException(TcpServerChannel channel, Exception e) { - logger.error(new ParameterizedMessage("exception from server channel caught on transport layer [channel={}]", channel), e); + if (e instanceof BindException) { + logger.trace(() -> new ParameterizedMessage("bind exception from server channel caught on transport layer [{}]", channel), e); + } else { + logger.error(new ParameterizedMessage("exception from server channel caught on transport layer [{}]", channel), e); + } } protected void serverAcceptedChannel(TcpChannel channel) {