From 8ffc13d8aabc21979989b430b2b58f2c34e6d258 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Tue, 27 Aug 2019 12:28:18 -0400 Subject: [PATCH] TT#65100 properly cleanup redis async context Change-Id: I53a0e7b3acbc81f4155e4141c889b166a327a24a --- daemon/redis.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/daemon/redis.c b/daemon/redis.c index f94986a67..58c8b2c1f 100644 --- a/daemon/redis.c +++ b/daemon/redis.c @@ -571,6 +571,11 @@ static int redis_notify(void) { return 0; } +static void redis_disconnect(void) { + redisAsyncDisconnect(rtpe_redis_notify_async_context); + rtpe_redis_notify_async_context = NULL; +} + void redis_notify_loop(void *d) { int seconds = 1, redis_notify_return = 0; time_t next_run = rtpe_now.tv_sec; @@ -614,6 +619,7 @@ void redis_notify_loop(void *d) { next_run = rtpe_now.tv_sec + seconds; if (redis_check_conn(r) == REDIS_STATE_RECONNECTED || redis_notify_return < 0) { + redis_disconnect(); // alloc new redis async context upon redis breakdown if (redis_async_context_alloc() < 0) { continue; @@ -628,7 +634,7 @@ void redis_notify_loop(void *d) { redis_notify_subscribe_action(UNSUBSCRIBE_ALL, 0); // free async context - redisAsyncDisconnect(rtpe_redis_notify_async_context); + redis_disconnect(); } struct redis *redis_new(const endpoint_t *ep, int db, const char *auth,