Browse Source

Add retry_max_delay option

- add option
- add test
gh-pages
Tomasz Durka 12 years ago
parent
commit
38dbacac9f
  1. 9
      index.js
  2. 22
      test.js

9
index.js

@ -51,11 +51,14 @@ function RedisClient(stream, options) {
if (options.connect_timeout && !isNaN(options.connect_timeout) && options.connect_timeout > 0) {
this.connect_timeout = +options.connect_timeout;
}
this.enable_offline_queue = true;
if (typeof this.options.enable_offline_queue === "boolean") {
this.enable_offline_queue = this.options.enable_offline_queue;
}
this.retry_max_delay = null;
if (options.retry_max_delay !== undefined && !isNaN(options.retry_max_delay) && options.retry_max_delay > 0) {
this.retry_max_delay = options.retry_max_delay;
}
this.initialize_retry_vars();
this.pub_sub_mode = false;
@ -429,7 +432,11 @@ RedisClient.prototype.connection_gone = function (why) {
return;
}
if (this.retry_max_delay !== null && this.retry_delay > this.retry_max_delay) {
this.retry_delay = this.retry_max_delay;
} else {
this.retry_delay = Math.floor(this.retry_delay * this.retry_backoff);
}
if (exports.debug_mode) {
console.log("Retry connection in " + this.retry_delay + " ms");

22
test.js

@ -1798,6 +1798,28 @@ tests.auth = function () {
});
};
tests.reconnectRetryMaxDelay = function() {
var time = new Date().getTime(),
name = 'reconnectRetryMaxDelay',
reconnecting = false;
var client = redis.createClient(PORT, HOST, {
retry_max_delay: 1
});
client.on('ready', function() {
if (!reconnecting) {
reconnecting = true;
client.retry_delay = 1000;
client.retry_backoff = 1;
client.stream.end();
} else {
client.end();
var lasted = new Date().getTime() - time;
assert.ok(lasted < 1000);
next(name);
}
});
};
all_tests = Object.keys(tests);
all_start = new Date();
test_count = 0;

Loading…
Cancel
Save