Netty epoll IOExceptions caused by unclean client disconnects being logged at INFO
patch by Sumanth Pasupuleti; reviewed by jasobrown for CASSANDRA-14909 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e4d0ce6b Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e4d0ce6b Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e4d0ce6b Branch: refs/heads/cassandra-3.11 Commit: e4d0ce6ba2d6088c7edf8475f02462e1606f606d Parents: 8404260 Author: Sumanth Pasupuleti <sumanth.pasupuleti...@gmail.com> Authored: Thu Nov 29 10:11:13 2018 -0800 Committer: Jason Brown <jasedbr...@gmail.com> Committed: Thu Nov 29 10:41:47 2018 -0800 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../org/apache/cassandra/transport/Message.java | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/e4d0ce6b/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 40016a1..d63016b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.18 + * Netty epoll IOExceptions caused by unclean client disconnects being logged at INFO (CASSANDRA-14909) * Unfiltered.isEmpty conflicts with Row extends AbstractCollection.isEmpty (CASSANDRA-14588) * RangeTombstoneList doesn't properly clean up mergeable or superseded rts in some cases (CASSANDRA-14894) * Fix handling of collection tombstones for dropped columns from legacy sstables (CASSANDRA-14912) http://git-wip-us.apache.org/repos/asf/cassandra/blob/e4d0ce6b/src/java/org/apache/cassandra/transport/Message.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/Message.java b/src/java/org/apache/cassandra/transport/Message.java index 28c8920..91ece5c 100644 --- a/src/java/org/apache/cassandra/transport/Message.java +++ b/src/java/org/apache/cassandra/transport/Message.java @@ -608,7 +608,21 @@ public abstract class Message if (!alwaysLogAtError && exception instanceof IOException) { - if (ioExceptionsAtDebugLevel.contains(exception.getMessage())) + String errorMessage = exception.getMessage(); + boolean logAtTrace = false; + + for (String ioException : ioExceptionsAtDebugLevel) + { + // exceptions thrown from the netty epoll transport add the name of the function that failed + // to the exception string (which is simply wrapping a JDK exception), so we can't do a simple/naive comparison + if (errorMessage.contains(ioException)) + { + logAtTrace = true; + break; + } + } + + if (logAtTrace) { // Likely unclean client disconnects logger.trace(message, exception); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org