From 6b04d1f8fb05b0123d1ca4ae2f0ce6b74984af4a Mon Sep 17 00:00:00 2001 From: Alex 'AdUser' Z Date: Tue, 4 Oct 2016 14:34:03 +1000 Subject: [PATCH] * backend/redis : changeable interval between pings of redis server --- configs/conf-available/10-backend-redis.conf | 1 + src/backends/redis.c | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/configs/conf-available/10-backend-redis.conf b/configs/conf-available/10-backend-redis.conf index 151ce2d..47c3fca 100644 --- a/configs/conf-available/10-backend-redis.conf +++ b/configs/conf-available/10-backend-redis.conf @@ -2,6 +2,7 @@ load = libf2b_backend_redis.so shared = yes timeout = 2 +ping = 5 host = 127.0.0.1 port = 6379 database = 0 diff --git a/src/backends/redis.c b/src/backends/redis.c index b0cf43d..6a0d2a9 100644 --- a/src/backends/redis.c +++ b/src/backends/redis.c @@ -28,6 +28,8 @@ struct _config { char error[256]; bool shared; time_t timeout; + uint8_t ping_num; /*< current number of ping() call */ + uint8_t ping_max; /*< max ping() calls before actually pinginig redis server */ uint8_t database; char password[32]; char host[32]; @@ -129,6 +131,10 @@ config(cfg_t *cfg, const char *key, const char *value) { cfg->port = atoi(value); return true; } + if (strcmp(key, "ping") == 0) { + cfg->ping_max = atoi(value); + return true; + } if (strcmp(key, "database") == 0) { cfg->database = atoi(value); return true; @@ -238,6 +244,12 @@ ping(cfg_t *cfg) { return false; } + cfg->ping_num++; + if (cfg->ping_num < cfg->ping_max) + return true; /* skip this try */ + + /* max empty calls reached, make real ping */ + cfg->ping_num = 0; redisReply *reply = redisCommand(cfg->conn, "PING"); if (reply) { bool result = true;