diff --git a/CHANGES.txt b/CHANGES.txt index e7a38914fb..13e65ee1f0 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -2,6 +2,8 @@ * Deprecate and ignore use_deterministic_table_id (CASSANDRA-19809) * Prioritize built indexes in IndexStatusManager (CASSANDRA-19400) * Add java.base/java.lang.reflect among opens for jvm11-client.options (CASSANDRA-19780) +Merged from 4.0: + * Do not spam log with SSLExceptions (CASSANDRA-18839) 5.0-rc2 diff --git a/src/java/org/apache/cassandra/transport/ExceptionHandlers.java b/src/java/org/apache/cassandra/transport/ExceptionHandlers.java index 0039bc0e7d..4156342fea 100644 --- a/src/java/org/apache/cassandra/transport/ExceptionHandlers.java +++ b/src/java/org/apache/cassandra/transport/ExceptionHandlers.java @@ -23,6 +23,8 @@ import java.net.SocketAddress; import java.util.Set; import java.util.concurrent.TimeUnit; +import javax.net.ssl.SSLException; + import com.google.common.base.Predicate; import com.google.common.collect.ImmutableSet; @@ -100,7 +102,7 @@ public class ExceptionHandlers logger.debug("Excluding client exception for {}; address contained in client_error_reporting_exclusions", ctx.channel().remoteAddress(), cause); return; } - logClientNetworkingExceptions(cause); + logClientNetworkingExceptions(cause, ctx.channel().remoteAddress()); } private static boolean isFatal(Throwable cause) @@ -110,7 +112,7 @@ public class ExceptionHandlers } } - static void logClientNetworkingExceptions(Throwable cause) + static void logClientNetworkingExceptions(Throwable cause, SocketAddress clientAddress) { if (Throwables.anyCauseMatches(cause, t -> t instanceof ProtocolException)) { @@ -133,6 +135,10 @@ public class ExceptionHandlers ClientMetrics.instance.markUnknownException(); logger.trace("Native exception in client networking", cause); } + else if (Throwables.anyCauseMatches(cause, t -> t instanceof SSLException)) + { + NoSpamLogger.log(logger, NoSpamLogger.Level.WARN, 1, TimeUnit.MINUTES, "SSLException in client networking with peer {} {}", clientAddress, cause.getMessage()); + } else { ClientMetrics.instance.markUnknownException(); diff --git a/src/java/org/apache/cassandra/transport/PreV5Handlers.java b/src/java/org/apache/cassandra/transport/PreV5Handlers.java index 3b98f41b87..d8c2067f5b 100644 --- a/src/java/org/apache/cassandra/transport/PreV5Handlers.java +++ b/src/java/org/apache/cassandra/transport/PreV5Handlers.java @@ -343,7 +343,8 @@ public class PreV5Handlers logger.debug("Excluding client exception for {}; address contained in client_error_reporting_exclusions", ctx.channel().remoteAddress(), cause); return; } - ExceptionHandlers.logClientNetworkingExceptions(cause); + + ExceptionHandlers.logClientNetworkingExceptions(cause, ctx.channel().remoteAddress()); JVMStabilityInspector.inspectThrowable(cause); }