commit 7721a1a: [Minor] Ensure that Redis inactive connections are well maintained
Vsevolod Stakhov
vsevolod at highsecure.ru
Thu Sep 23 13:07:05 UTC 2021
Author: Vsevolod Stakhov
Date: 2021-09-23 14:02:34 +0100
URL: https://github.com/rspamd/rspamd/commit/7721a1a19baa139b460ec6126987a4943b4facb6 (HEAD -> master)
[Minor] Ensure that Redis inactive connections are well maintained
---
src/libserver/redis_pool.cxx | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/libserver/redis_pool.cxx b/src/libserver/redis_pool.cxx
index 3d56623c8..052f2eb7c 100644
--- a/src/libserver/redis_pool.cxx
+++ b/src/libserver/redis_pool.cxx
@@ -386,6 +386,9 @@ redis_pool_connection::schedule_timeout() -> void
ctx, real_timeout);
timeout.data = this;
+ /* Restore in case if these fields have been modified externally */
+ ctx->data = this;
+ redisAsyncSetDisconnectCallback(ctx, redis_pool_connection::redis_on_disconnect);
ev_timer_init(&timeout,
redis_pool_connection::redis_conn_timeout_cb,
real_timeout, real_timeout / 2.0);
@@ -527,7 +530,7 @@ auto redis_pool::release_connection(redisAsyncContext *ctx,
else {
if (how == RSPAMD_REDIS_RELEASE_DEFAULT) {
/* Ensure that there are no callbacks attached to this conn */
- if (ctx->replies.head == nullptr) {
+ if (ctx->replies.head == nullptr && (ctx->c.flags & REDIS_CONNECTED)) {
/* Just move it to the inactive queue */
conn->state = rspamd_redis_pool_connection_state::RSPAMD_REDIS_POOL_CONN_INACTIVE;
conn->elt->move_to_inactive(conn);
More information about the Commits
mailing list