You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-06 02:15:48 +03:00
Merge pull request #142 from oxys/master
After a connection error, selected db, if it was set, is not restored
This commit is contained in:
34
index.js
34
index.js
@@ -57,7 +57,8 @@ function RedisClient(stream, options) {
|
|||||||
this.server_info = {};
|
this.server_info = {};
|
||||||
this.auth_pass = null;
|
this.auth_pass = null;
|
||||||
this.parser_module = null;
|
this.parser_module = null;
|
||||||
|
this.selected_db = null; // save the selected db here, used when reconnecting
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
this.stream.on("connect", function () {
|
this.stream.on("connect", function () {
|
||||||
@@ -163,7 +164,12 @@ RedisClient.prototype.do_auth = function () {
|
|||||||
self.auth_callback(err, res);
|
self.auth_callback(err, res);
|
||||||
self.auth_callback = null;
|
self.auth_callback = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// restore the selected db if needed
|
||||||
|
if (this.selected_db !== null) {
|
||||||
|
this.send_command('select', [this.selected_db]);
|
||||||
|
}
|
||||||
|
|
||||||
// now we are really connected
|
// now we are really connected
|
||||||
self.emit("connect");
|
self.emit("connect");
|
||||||
if (self.options.no_ready_check) {
|
if (self.options.no_ready_check) {
|
||||||
@@ -200,6 +206,12 @@ RedisClient.prototype.on_connect = function () {
|
|||||||
if (this.auth_pass) {
|
if (this.auth_pass) {
|
||||||
this.do_auth();
|
this.do_auth();
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
// restore the selected db if needed
|
||||||
|
if (this.selected_db !== null) {
|
||||||
|
this.send_command('select', [this.selected_db]);
|
||||||
|
}
|
||||||
|
|
||||||
this.emit("connect");
|
this.emit("connect");
|
||||||
|
|
||||||
if (this.options.no_ready_check) {
|
if (this.options.no_ready_check) {
|
||||||
@@ -726,6 +738,24 @@ commands.forEach(function (command) {
|
|||||||
Multi.prototype[command.toUpperCase()] = Multi.prototype[command];
|
Multi.prototype[command.toUpperCase()] = Multi.prototype[command];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// store db in this.select_db to restore it on reconnect
|
||||||
|
RedisClient.prototype.select = function (db, callback) {
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
this.send_command('select', [db], function (err, res) {
|
||||||
|
if (err === null) {
|
||||||
|
self.selected_db = db;
|
||||||
|
}
|
||||||
|
if (typeof(callback) !== 'undefined') {
|
||||||
|
callback(err, res);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
RedisClient.prototype.SELECT = RedisClient.prototype.select;
|
||||||
|
|
||||||
|
|
||||||
// Stash auth for connect and reconnect. Send immediately if already connected.
|
// Stash auth for connect and reconnect. Send immediately if already connected.
|
||||||
RedisClient.prototype.auth = function () {
|
RedisClient.prototype.auth = function () {
|
||||||
var args = to_array(arguments);
|
var args = to_array(arguments);
|
||||||
|
Reference in New Issue
Block a user