You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-09 00:22:08 +03:00
authentication retry while server is loading db (danmaz74) [GH-101]
This commit is contained in:
42
index.js
42
index.js
@@ -144,25 +144,9 @@ function RedisClient(stream, options) {
|
|||||||
util.inherits(RedisClient, events.EventEmitter);
|
util.inherits(RedisClient, events.EventEmitter);
|
||||||
exports.RedisClient = RedisClient;
|
exports.RedisClient = RedisClient;
|
||||||
|
|
||||||
RedisClient.prototype.on_connect = function () {
|
RedisClient.prototype.do_auth = function () {
|
||||||
if (exports.debug_mode) {
|
|
||||||
console.log("Stream connected " + this.host + ":" + this.port + " fd " + this.stream.fd);
|
|
||||||
}
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
this.connected = true;
|
|
||||||
this.ready = false;
|
|
||||||
this.attempts = 0;
|
|
||||||
this.connections += 1;
|
|
||||||
this.command_queue = new Queue();
|
|
||||||
this.emitted_end = false;
|
|
||||||
this.retry_timer = null;
|
|
||||||
this.current_retry_delay = this.retry_time;
|
|
||||||
this.stream.setNoDelay();
|
|
||||||
this.stream.setTimeout(0);
|
|
||||||
|
|
||||||
// if redis is still loading the db, it will not authenticate and everything else will fail
|
|
||||||
function cmd_do_auth() {
|
|
||||||
if (exports.debug_mode) {
|
if (exports.debug_mode) {
|
||||||
console.log("Sending auth to " + self.host + ":" + self.port + " fd " + self.stream.fd);
|
console.log("Sending auth to " + self.host + ":" + self.port + " fd " + self.stream.fd);
|
||||||
}
|
}
|
||||||
@@ -170,8 +154,11 @@ RedisClient.prototype.on_connect = function () {
|
|||||||
self.send_command("auth", [this.auth_pass], function (err, res) {
|
self.send_command("auth", [this.auth_pass], function (err, res) {
|
||||||
if (err) {
|
if (err) {
|
||||||
if (err.toString().match("LOADING")) {
|
if (err.toString().match("LOADING")) {
|
||||||
|
// if redis is still loading the db, it will not authenticate and everything else will fail
|
||||||
console.log("Redis still loading, trying to authenticate later");
|
console.log("Redis still loading, trying to authenticate later");
|
||||||
setTimeout(cmd_do_auth, 2000); // TODO - magic number alert
|
setTimeout(function () {
|
||||||
|
self.do_auth();
|
||||||
|
}, 2000); // TODO - magic number alert
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
return self.emit("error", "Auth error: " + err);
|
return self.emit("error", "Auth error: " + err);
|
||||||
@@ -198,10 +185,27 @@ RedisClient.prototype.on_connect = function () {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
self.send_anyway = false;
|
self.send_anyway = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
RedisClient.prototype.on_connect = function () {
|
||||||
|
if (exports.debug_mode) {
|
||||||
|
console.log("Stream connected " + this.host + ":" + this.port + " fd " + this.stream.fd);
|
||||||
}
|
}
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
this.connected = true;
|
||||||
|
this.ready = false;
|
||||||
|
this.attempts = 0;
|
||||||
|
this.connections += 1;
|
||||||
|
this.command_queue = new Queue();
|
||||||
|
this.emitted_end = false;
|
||||||
|
this.retry_timer = null;
|
||||||
|
this.current_retry_delay = this.retry_time;
|
||||||
|
this.stream.setNoDelay();
|
||||||
|
this.stream.setTimeout(0);
|
||||||
|
|
||||||
if (this.auth_pass) {
|
if (this.auth_pass) {
|
||||||
cmd_do_auth();
|
this.do_auth();
|
||||||
} else {
|
} else {
|
||||||
this.emit("connect");
|
this.emit("connect");
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user