mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
catch redis client error and continue the process
This commit is contained in:
parent
75d9206262
commit
ccd4f2d3f0
3 changed files with 34 additions and 13 deletions
|
|
@ -160,7 +160,12 @@ const main = async (): Promise<void> => {
|
|||
|
||||
// redis is optional
|
||||
if (env.redis.url) {
|
||||
redisClient.on('error', (err) => {
|
||||
console.error('Redis Client Error', err)
|
||||
})
|
||||
|
||||
await redisClient.connect()
|
||||
console.log('Redis Client Connected:', env.redis.url)
|
||||
}
|
||||
|
||||
const { app, apollo, httpServer } = createApp()
|
||||
|
|
|
|||
|
|
@ -416,8 +416,15 @@ export const setRecentlySavedItemInRedis = async (
|
|||
// save the url in redis for 8 hours so rss-feeder won't try to re-save it
|
||||
const redisKey = `recent-saved-item:${userId}:${url}`
|
||||
const ttlInSeconds = 60 * 60 * 8
|
||||
return redisClient.set(redisKey, 1, {
|
||||
EX: ttlInSeconds,
|
||||
NX: true,
|
||||
})
|
||||
try {
|
||||
return redisClient.set(redisKey, 1, {
|
||||
EX: ttlInSeconds,
|
||||
NX: true,
|
||||
})
|
||||
} catch (error) {
|
||||
logger.error('error setting recently saved item in redis', {
|
||||
redisKey,
|
||||
error,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,11 +63,15 @@ const feedFetchFailedRedisKey = (feedUrl: string) =>
|
|||
|
||||
const isFeedBlocked = async (feedUrl: string, redisClient: RedisClient) => {
|
||||
const key = feedFetchFailedRedisKey(feedUrl)
|
||||
const result = await redisClient.get(key)
|
||||
// if the feed has failed to fetch more than certain times, block it
|
||||
const maxFailures = parseInt(process.env.MAX_FEED_FETCH_FAILURES ?? '10')
|
||||
if (result && parseInt(result) > maxFailures) {
|
||||
return true
|
||||
try {
|
||||
const result = await redisClient.get(key)
|
||||
// if the feed has failed to fetch more than certain times, block it
|
||||
const maxFailures = parseInt(process.env.MAX_FEED_FETCH_FAILURES ?? '10')
|
||||
if (result && parseInt(result) > maxFailures) {
|
||||
return true
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Failed to check feed block status', feedUrl, error)
|
||||
}
|
||||
|
||||
return false
|
||||
|
|
@ -75,11 +79,16 @@ const isFeedBlocked = async (feedUrl: string, redisClient: RedisClient) => {
|
|||
|
||||
const blockFeed = async (feedUrl: string, redisClient: RedisClient) => {
|
||||
const key = feedFetchFailedRedisKey(feedUrl)
|
||||
const result = await redisClient.incr(key)
|
||||
// expire the key in 1 day
|
||||
await redisClient.expire(key, 24 * 60 * 60, 'NX')
|
||||
try {
|
||||
const result = await redisClient.incr(key)
|
||||
// expire the key in 1 day
|
||||
await redisClient.expire(key, 24 * 60 * 60, 'NX')
|
||||
|
||||
return result
|
||||
return result
|
||||
} catch (error) {
|
||||
console.error('Failed to block feed', feedUrl, error)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
export const isContentFetchBlocked = (feedUrl: string) => {
|
||||
|
|
|
|||
Loading…
Reference in a new issue