summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorPaul Brown <paul90brown@gmail.com>2021-12-23 16:26:44 -0600
committerAsif Saif Uddin <auvipy@gmail.com>2021-12-24 09:25:47 +0600
commit47781af0508a168a8726f024165ce583c1d5de24 (patch)
tree911dd1621738a78e4fb8d1205298d7c1f0522b47 /t
parent507b3064004133d14b974d387200750f21309323 (diff)
downloadkombu-47781af0508a168a8726f024165ce583c1d5de24.tar.gz
prevent event loop polling on closed redis transports (and causing leak)
Diffstat (limited to 't')
-rw-r--r--t/unit/transport/test_redis.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/t/unit/transport/test_redis.py b/t/unit/transport/test_redis.py
index 13dfc356..13f45385 100644
--- a/t/unit/transport/test_redis.py
+++ b/t/unit/transport/test_redis.py
@@ -854,6 +854,21 @@ class test_Channel:
call(13, transport.on_readable, 13),
])
+ def test_register_with_event_loop__on_disconnect__loop_cleanup(self):
+ """Ensure event loop polling stops on disconnect."""
+ transport = self.connection.transport
+ self.connection._sock = None
+ transport.cycle = Mock(name='cycle')
+ transport.cycle.fds = {12: 'LISTEN', 13: 'BRPOP'}
+ conn = Mock(name='conn')
+ conn.client = Mock(name='client', transport_options={})
+ loop = Mock(name='loop')
+ loop.on_tick = set()
+ redis.Transport.register_with_event_loop(transport, conn, loop)
+ assert len(loop.on_tick) == 1
+ transport.cycle._on_connection_disconnect(self.connection)
+ assert loop.on_tick == set()
+
def test_configurable_health_check(self):
transport = self.connection.transport
transport.cycle = Mock(name='cycle')