Improve Redis error handling
This commit is contained in:
@@ -85,8 +85,7 @@ export default function init(
|
|||||||
|
|
||||||
io.of("/").adapter.on("error", (err: Error) => {
|
io.of("/").adapter.on("error", (err: Error) => {
|
||||||
if (err.name === "MaxRetriesPerRequestError") {
|
if (err.name === "MaxRetriesPerRequestError") {
|
||||||
Logger.error("Redis maximum retries exceeded in socketio adapter", err);
|
Logger.fatal("Redis maximum retries exceeded in socketio adapter", err);
|
||||||
throw err;
|
|
||||||
} else {
|
} else {
|
||||||
Logger.error("Redis error in socketio adapter", err);
|
Logger.error("Redis error in socketio adapter", err);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,12 +11,17 @@ type RedisAdapterOptions = RedisOptions & {
|
|||||||
const defaultOptions: RedisOptions = {
|
const defaultOptions: RedisOptions = {
|
||||||
maxRetriesPerRequest: 20,
|
maxRetriesPerRequest: 20,
|
||||||
enableReadyCheck: false,
|
enableReadyCheck: false,
|
||||||
|
showFriendlyErrorStack: env.ENVIRONMENT === "development",
|
||||||
|
|
||||||
retryStrategy(times: number) {
|
retryStrategy(times: number) {
|
||||||
Logger.warn(`Retrying redis connection: attempt ${times}`);
|
Logger.warn(`Retrying redis connection: attempt ${times}`);
|
||||||
return Math.min(times * 100, 3000);
|
return Math.min(times * 100, 3000);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
reconnectOnError(err) {
|
||||||
|
return err.message.includes("READONLY");
|
||||||
|
},
|
||||||
|
|
||||||
// support Heroku Redis, see:
|
// support Heroku Redis, see:
|
||||||
// https://devcenter.heroku.com/articles/heroku-redis#ioredis-module
|
// https://devcenter.heroku.com/articles/heroku-redis#ioredis-module
|
||||||
tls: (env.REDIS_URL || "").startsWith("rediss://")
|
tls: (env.REDIS_URL || "").startsWith("rediss://")
|
||||||
|
|||||||
Reference in New Issue
Block a user