You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-06 02:15:48 +03:00
@@ -195,8 +195,8 @@ with an error, or an error will be thrown if no callback is specified.
|
||||
reconnection (delay) almost doubles. This delay normally grows infinitely, but setting `retry_max_delay` limits delay
|
||||
to maximum value, provided in milliseconds.
|
||||
* `connect_timeout` defaults to `86400000`. Setting `connect_timeout` limits total time for client to reconnect.
|
||||
Value is provided in milliseconds and is counted once the disconnect occured. The last retry is going to happen once after the connect_timeout value is exceeded.
|
||||
That way the default is to try reconnecting until at least 24h passed.
|
||||
Value is provided in milliseconds and is counted once the disconnect occured. The last retry is going to happen exactly at the timeout time.
|
||||
That way the default is to try reconnecting until 24h passed.
|
||||
* `max_attempts` defaults to `null`. By default client will try reconnecting until connected. Setting `max_attempts`
|
||||
limits total amount of reconnects. Setting this to 0 will prevent any reconnect tries.
|
||||
* `auth_pass` defaults to `null`. By default client will try connecting without auth. If set, client will run redis auth command on connect.
|
||||
|
11
index.js
11
index.js
@@ -423,7 +423,7 @@ RedisClient.prototype.connection_gone = function (why) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.retry_totaltime > this.connect_timeout) {
|
||||
if (this.retry_totaltime >= this.connect_timeout) {
|
||||
this.emit('error', new Error("Redis connection in broken state: connection timeout exceeded."));
|
||||
return;
|
||||
}
|
||||
@@ -459,11 +459,12 @@ RedisClient.prototype.connection_gone = function (why) {
|
||||
return;
|
||||
}
|
||||
|
||||
var nextDelay = Math.floor(this.retry_delay * this.retry_backoff);
|
||||
if (this.retry_max_delay !== null && nextDelay > this.retry_max_delay) {
|
||||
this.retry_delay = Math.floor(this.retry_delay * this.retry_backoff);
|
||||
if (this.retry_max_delay !== null && this.retry_delay > this.retry_max_delay) {
|
||||
this.retry_delay = this.retry_max_delay;
|
||||
} else {
|
||||
this.retry_delay = nextDelay;
|
||||
} else if (this.retry_totaltime + this.retry_delay > this.connect_timeout) {
|
||||
// Do not exceed the maximum
|
||||
this.retry_delay = this.connect_timeout - this.retry_totaltime;
|
||||
}
|
||||
|
||||
debug("Retry connection in " + this.retry_delay + " ms");
|
||||
|
@@ -45,7 +45,6 @@ describe("on lost connection", function () {
|
||||
connect_timeout: connect_timeout
|
||||
});
|
||||
var time = 0;
|
||||
var multiplier = 0;
|
||||
|
||||
client.once('ready', function() {
|
||||
// Pretend that redis can't reconnect
|
||||
@@ -54,17 +53,13 @@ describe("on lost connection", function () {
|
||||
});
|
||||
|
||||
client.on("reconnecting", function (params) {
|
||||
if (time > 0 && multiplier === 0) {
|
||||
multiplier = params.delay / time;
|
||||
}
|
||||
time += params.delay;
|
||||
});
|
||||
|
||||
client.on('error', function(err) {
|
||||
if (/Redis connection in broken state: connection timeout.*?exceeded./.test(err.message)) {
|
||||
setTimeout(function () {
|
||||
assert(time > connect_timeout);
|
||||
assert(time / multiplier < connect_timeout);
|
||||
assert(time === connect_timeout);
|
||||
done();
|
||||
}, 1500);
|
||||
}
|
||||
|
Reference in New Issue
Block a user