diff --git a/CHANGES.txt b/CHANGES.txt index 9dd54f9b45..7d277dbc73 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -18,6 +18,7 @@ Merged from 2.0: * Make StreamSession#closeSession() idempotent (CASSANDRA-7262) * Fix infinite loop on exception while streaming (CASSANDRA-7330) Merged from 1.2: + * Enable keepalive for native protocol (CASSANDRA-7380) * Check internal addresses for seeds (CASSANDRA-6523) * Fix potential / by 0 in HHOM page size calculation (CASSANDRA-7354) * Use LOCAL_ONE for non-superuser auth queries (CASSANDRA-7328) diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml index e6c34e04df..102e30466e 100644 --- a/conf/cassandra.yaml +++ b/conf/cassandra.yaml @@ -385,7 +385,7 @@ rpc_port: 9160 # be set. # broadcast_rpc_address: 1.2.3.4 -# enable or disable keepalive on rpc connections +# enable or disable keepalive on rpc/native connections rpc_keepalive: true # Cassandra provides two out-of-the-box options for the RPC Server: diff --git a/src/java/org/apache/cassandra/transport/Server.java b/src/java/org/apache/cassandra/transport/Server.java index 2fed8895e3..d10b9344eb 100644 --- a/src/java/org/apache/cassandra/transport/Server.java +++ b/src/java/org/apache/cassandra/transport/Server.java @@ -144,6 +144,7 @@ public class Server implements CassandraDaemon.Server .group(workerGroup) .channel(NioServerSocketChannel.class) .childOption(ChannelOption.TCP_NODELAY, true) + .childOption(ChannelOption.SO_KEEPALIVE, DatabaseDescriptor.getRpcKeepAlive()) .childOption(ChannelOption.ALLOCATOR, CBUtil.allocator) .childOption(ChannelOption.WRITE_BUFFER_HIGH_WATER_MARK, 32 * 1024) .childOption(ChannelOption.WRITE_BUFFER_LOW_WATER_MARK, 8 * 1024);