From 6aed34231f387b7a2b29fb23da49e5e43e49e9c6 Mon Sep 17 00:00:00 2001 From: Nick Travers Date: Thu, 13 Jun 2019 09:24:36 -0700 Subject: [PATCH] netty: refine filtering for benign transport level exceptions Transport level exceptions (e.g. "Connection reset by peer") are not useful and clutter the logs. `NettyServerTransport` contains logic to log such exceptions at level `FINE`. When running with epoll, transport level exceptions are prefixed with additional contextual information (e.g. "syscall:read(..) failed:") that causes the exceptions to be logged at level `INFO`. Update the filtering logic to match on error messages _containing_ the blacklisted messages, rather than using string equality. Closes #5872. Signed-off-by: Nick Travers --- netty/src/main/java/io/grpc/netty/NettyServerTransport.java | 2 +- .../test/java/io/grpc/netty/NettyServerTransportTest.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/netty/src/main/java/io/grpc/netty/NettyServerTransport.java b/netty/src/main/java/io/grpc/netty/NettyServerTransport.java index d48fbe8975..b881188f7c 100644 --- a/netty/src/main/java/io/grpc/netty/NettyServerTransport.java +++ b/netty/src/main/java/io/grpc/netty/NettyServerTransport.java @@ -184,7 +184,7 @@ class NettyServerTransport implements ServerTransport { static Level getLogLevel(Throwable t) { if (t instanceof IOException && t.getMessage() != null) { for (String msg : QUIET_ERRORS) { - if (t.getMessage().equals(msg)) { + if (t.getMessage().contains(msg)) { return Level.FINE; } } diff --git a/netty/src/test/java/io/grpc/netty/NettyServerTransportTest.java b/netty/src/test/java/io/grpc/netty/NettyServerTransportTest.java index 26b54d34fd..d4ccbb089e 100644 --- a/netty/src/test/java/io/grpc/netty/NettyServerTransportTest.java +++ b/netty/src/test/java/io/grpc/netty/NettyServerTransportTest.java @@ -40,6 +40,12 @@ public class NettyServerTransportTest { "An existing connection was forcibly closed by the remote host"))); } + @Test + public void quiet_prefixed() { + assertEquals(Level.FINE, getLogLevel(new IOException( + "syscall:read(..) failed: Connection reset by peer"))); + } + @Test public void nonquiet() { assertEquals(Level.INFO, getLogLevel(new IOException("foo")));