From 305b324ab2f85fdc7f2cda48b0925d2b9d10c596 Mon Sep 17 00:00:00 2001 From: "harish.kumar2" Date: Tue, 23 Jun 2020 12:10:47 +0530 Subject: [PATCH 1/2] if redis connection fails, fall back to memory --- src/apicache.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/apicache.js b/src/apicache.js index e8ebab7..042f95c 100644 --- a/src/apicache.js +++ b/src/apicache.js @@ -304,7 +304,7 @@ function ApiCache() { debug('clearing cached entry for "' + key + '"') clearTimeout(timers[key]) delete timers[key] - if (!globalOptions.redisClient) { + if (!(redis && redis.connected)) { memCache.delete(key) } else { try { @@ -322,7 +322,7 @@ function ApiCache() { clearTimeout(timers[target]) delete timers[target] // clear actual cached entry - if (!redis) { + if (!(redis && redis.connected)) { memCache.delete(target) } else { try { @@ -347,7 +347,7 @@ function ApiCache() { } else { debug('clearing entire index') - if (!redis) { + if (!(redis && redis.connected)) { memCache.clear() } else { // clear redis keys one by one from internal index to prevent clearing non-apicache entries @@ -632,16 +632,6 @@ function ApiCache() { // attempt cache hit var redis = opt.redisClient - var cached = !redis ? memCache.getValue(key) : null - - // send if cache hit from memory-cache - if (cached) { - var elapsed = new Date() - req.apicacheTimer - debug('sending cached (memory-cache) version of', key, logDuration(elapsed)) - - perf.hit(key) - return sendCachedResponse(req, res, cached, middlewareToggle, next, duration) - } // send if cache hit from redis if (redis && redis.connected) { @@ -679,6 +669,16 @@ function ApiCache() { return makeResponseCacheable(req, res, next, key, duration, strDuration, middlewareToggle) } } else { + // fallback to memory cache for redis not connected or no redis given + var cached = memCache.getValue(key) || null + if (cached) { + var elapsed = new Date() - req.apicacheTimer + debug('sending cached (memory-cache) version of', key, logDuration(elapsed)) + + perf.hit(key) + return sendCachedResponse(req, res, cached, middlewareToggle, next, duration) + } + perf.miss(key) return makeResponseCacheable(req, res, next, key, duration, strDuration, middlewareToggle) } From 6203bbc1d86addc4675cc69a58e56781a5353d05 Mon Sep 17 00:00:00 2001 From: "harish.kumar2" Date: Tue, 23 Jun 2020 12:20:54 +0530 Subject: [PATCH 2/2] dummy commit --- src/apicache.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/apicache.js b/src/apicache.js index 042f95c..d02c874 100644 --- a/src/apicache.js +++ b/src/apicache.js @@ -674,7 +674,6 @@ function ApiCache() { if (cached) { var elapsed = new Date() - req.apicacheTimer debug('sending cached (memory-cache) version of', key, logDuration(elapsed)) - perf.hit(key) return sendCachedResponse(req, res, cached, middlewareToggle, next, duration) }