diff --git a/src/cache.js b/src/cache.js index 9deb51b83d5d651dfc1ee1a4a19cfcc8dab96a67..bb56d038833675c1d75e6765cd5de110f0c4ded8 100644 --- a/src/cache.js +++ b/src/cache.js @@ -16,7 +16,7 @@ export function set (key, value) { if (cache[key] === value) return cache[key] = value if (redis.isEnabled()) { - return redis.client.set(key, value) + return redis.client.set(key, value).catch(err => logger.error(err)) } } @@ -35,7 +35,7 @@ export function get (key, fallback) { const promise = (async () => { if (redis.isEnabled()) { - let result = await redis.client.get(key) + let result = await redis.client.get(key).catch(err => logger.error(err)) if (result) { logger.debug(`[Cache] Resolve from redis: ${key}`) result = JSON.parse(result) @@ -50,7 +50,7 @@ export function get (key, fallback) { if (fallbackResult) { logger.debug(`[Cache] Found a getter for: ${key}`) cache[key] = fallbackResult - if (redis.isEnabled()) redis.client.set(key, JSON.stringify(fallbackResult)) + if (redis.isEnabled()) redis.client.set(key, JSON.stringify(fallbackResult)).catch(err => logger.error(err)) } return fallbackResult })() @@ -79,7 +79,10 @@ export function getFile ({ name, version }, fallback) { const [body, meta = '{}'] = await Promise.all([ redis.client.getBuffer(bodyKey), redis.client.get(metaKey) - ]) + ]).catch((err) => { + logger.error(`[Cache] could not access redis: ${err}`) + return [] + }) if (body) { logger.debug(`[Cache] Resolve file from redis: ${key}`) @@ -96,8 +99,8 @@ export function getFile ({ name, version }, fallback) { if (redis.isEnabled()) { logger.debug(`[Cache] Store file in redis: ${key}`) const { body, ...rest } = dataFromServer - redis.client.set(bodyKey, createWritable(body)) - redis.client.set(metaKey, JSON.stringify(rest)) + redis.client.set(bodyKey, createWritable(body)).catch(err => logger.error(`[Cache] could not store ${bodyKey}: ${err}`)) + redis.client.set(metaKey, JSON.stringify(rest)).catch(err => logger.error(`[Cache] could not store ${metaKey}: ${err}`)) } // overwrite cache with synchronous data diff --git a/src/redis.js b/src/redis.js index b1c8aee5d13df3a14edcb1fef9119e52315a69f7..9286d086c4f013731fba08925e1e42ec521cc94f 100644 --- a/src/redis.js +++ b/src/redis.js @@ -9,8 +9,8 @@ const createClient = (type, options = {}) => { if (!isEnabled()) { return new Proxy({ getBuffer () {}, - get () {}, - set () {}, + get () { return Promise.resolve() }, + set () { return Promise.resolve() }, del () {}, flushdb () { return {} }, status: '', @@ -47,7 +47,7 @@ export async function isReady () { }).catch(() => false) } -export const client = createClient('common client') +export const client = createClient('common client', { maxRetriesPerRequest: 1 }) export const pubClient = createClient('pub client') export const subClient = createClient('sub client', commonQueueOptions)