diff --git a/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/transport/netty4/ESLoggingHandlerIT.java b/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/transport/netty4/ESLoggingHandlerIT.java index 9d054839849de..2888e40154da5 100644 --- a/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/transport/netty4/ESLoggingHandlerIT.java +++ b/modules/transport-netty4/src/internalClusterTest/java/org/elasticsearch/transport/netty4/ESLoggingHandlerIT.java @@ -10,11 +10,13 @@ package org.elasticsearch.transport.netty4; import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.core.LogEvent; import org.elasticsearch.ESNetty4IntegTestCase; import org.elasticsearch.core.TimeValue; import org.elasticsearch.test.ESIntegTestCase; import org.elasticsearch.test.MockLog; import org.elasticsearch.test.junit.annotations.TestLogging; +import org.elasticsearch.transport.NodeDisconnectedException; import org.elasticsearch.transport.TcpTransport; import org.elasticsearch.transport.TransportLogger; @@ -117,7 +119,15 @@ public void testExceptionalDisconnectLogging() throws Exception { TcpTransport.class.getCanonicalName(), Level.DEBUG, ".*closed transport connection \\[[1-9][0-9]*\\] to .* with age \\[[0-9]+ms\\], exception:.*" - ) + ) { + @Override + public void match(LogEvent event) { + if (event.getThrown() instanceof NodeDisconnectedException nodeDisconnectedException + && nodeDisconnectedException.getMessage().contains("closed exceptionally: Netty4TcpChannel{")) { + super.match(event); + } + } + } ); final String nodeName = internalCluster().startNode(); diff --git a/server/src/main/java/org/elasticsearch/transport/TcpTransport.java b/server/src/main/java/org/elasticsearch/transport/TcpTransport.java index 1c7a29e4919ed..24570c544bdea 100644 --- a/server/src/main/java/org/elasticsearch/transport/TcpTransport.java +++ b/server/src/main/java/org/elasticsearch/transport/TcpTransport.java @@ -1134,7 +1134,7 @@ public void onResponse(Void v) { nodeChannels.channels.forEach(ch -> { // Mark the channel init time ch.getChannelStats().markAccessed(relativeMillisTime); - ch.addCloseListener(new ActionListener() { + ch.addCloseListener(new ActionListener<>() { @Override public void onResponse(Void ignored) { nodeChannels.close(); @@ -1142,7 +1142,7 @@ public void onResponse(Void ignored) { @Override public void onFailure(Exception e) { - nodeChannels.closeAndFail(e); + nodeChannels.closeAndFail(new NodeDisconnectedException(node, "closed exceptionally: " + ch, null, e)); } }); });