From 5ac1856e1316131ad51dc82191d9e9dfec40be6c Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Wed, 28 Feb 2024 15:35:43 +0300 Subject: [PATCH] Fixed - "Failed to submit a listener notification task. Event loop shut down?" error caused by PingConnectionHandler #3809 --- .../redisson/client/handler/PingConnectionHandler.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/redisson/src/main/java/org/redisson/client/handler/PingConnectionHandler.java b/redisson/src/main/java/org/redisson/client/handler/PingConnectionHandler.java index c6099ec27..2f1533a61 100644 --- a/redisson/src/main/java/org/redisson/client/handler/PingConnectionHandler.java +++ b/redisson/src/main/java/org/redisson/client/handler/PingConnectionHandler.java @@ -59,6 +59,10 @@ public class PingConnectionHandler extends ChannelInboundHandlerAdapter { private void sendPing(ChannelHandlerContext ctx) { RedisConnection connection = RedisConnection.getFrom(ctx.channel()); + if (connection.getRedisClient().isShutdown()) { + return; + } + RFuture future; CommandData currentCommand = connection.getCurrentCommand(); if (connection.getUsage() == 0 && (currentCommand == null || !currentCommand.isBlockingCommand())) { @@ -90,6 +94,10 @@ public class PingConnectionHandler extends ChannelInboundHandlerAdapter { log.error("Unable to send PING command over channel: {}", ctx.channel(), cause); } + if (connection.getRedisClient().isShutdown()) { + return; + } + log.debug("channel: {} closed due to PING response timeout set in {} ms", ctx.channel(), config.getPingConnectionInterval()); ctx.channel().close(); connection.getRedisClient().getConfig().getFailedNodeDetector().onPingFailed();