diff --git a/CHANGES.txt b/CHANGES.txt index eb10bad166..3073fd73dc 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -241,6 +241,7 @@ Merged from 2.2: * Enable repair -pr and -local together (fix regression of CASSANDRA-7450) (CASSANDRA-12522) * Split consistent range movement flag correction (CASSANDRA-12786) Merged from 2.1: + * Upgrade netty version to fix memory leak with client encryption (CASSANDRA-13114) * cqlsh copy-from: sort user type fields in csv (CASSANDRA-12959) * Don't skip sstables based on maxLocalDeletionTime (CASSANDRA-12765) diff --git a/build.xml b/build.xml index 0fdf5f38dd..49dd95a3aa 100644 --- a/build.xml +++ b/build.xml @@ -429,7 +429,7 @@ - + diff --git a/lib/licenses/netty-all-4.0.39.Final.txt b/lib/licenses/netty-all-4.0.44.Final.txt similarity index 100% rename from lib/licenses/netty-all-4.0.39.Final.txt rename to lib/licenses/netty-all-4.0.44.Final.txt diff --git a/lib/netty-all-4.0.39.Final.jar b/lib/netty-all-4.0.44.Final.jar similarity index 59% rename from lib/netty-all-4.0.39.Final.jar rename to lib/netty-all-4.0.44.Final.jar index 3f5b3e68a6..9c5bda5e2d 100644 Binary files a/lib/netty-all-4.0.39.Final.jar and b/lib/netty-all-4.0.44.Final.jar differ diff --git a/src/java/org/apache/cassandra/transport/Message.java b/src/java/org/apache/cassandra/transport/Message.java index fc8cd93eec..2b629ed3be 100644 --- a/src/java/org/apache/cassandra/transport/Message.java +++ b/src/java/org/apache/cassandra/transport/Message.java @@ -555,10 +555,12 @@ public abstract class Message public void exceptionCaught(final ChannelHandlerContext ctx, Throwable cause) throws Exception { + // Provide error message to client in case channel is still open + UnexpectedChannelExceptionHandler handler = new UnexpectedChannelExceptionHandler(ctx.channel(), false); + ErrorMessage errorMessage = ErrorMessage.fromException(cause, handler); if (ctx.channel().isOpen()) { - UnexpectedChannelExceptionHandler handler = new UnexpectedChannelExceptionHandler(ctx.channel(), false); - ChannelFuture future = ctx.writeAndFlush(ErrorMessage.fromException(cause, handler)); + ChannelFuture future = ctx.writeAndFlush(errorMessage); // On protocol exception, close the channel as soon as the message have been sent if (cause instanceof ProtocolException) {