Browse Source

Add redis error codes to the errors

greenkeeper-update-all
Ruben Bridgewater 9 years ago
parent
commit
40c037eaf4
  1. 7
      index.js
  2. 6
      test/commands/eval.spec.js
  3. 3
      test/commands/keys.spec.js

7
index.js

@ -500,12 +500,19 @@ RedisClient.prototype.connection_gone = function (why) {
this.retry_timer = setTimeout(retry_connection, this.retry_delay, this);
};
var err_code = /^([A-Z]+)\s+(.+)$/;
RedisClient.prototype.return_error = function (err) {
var command_obj = this.command_queue.shift(), queue_len = this.command_queue.length;
if (command_obj.command && command_obj.command.toUpperCase) {
err.command_used = command_obj.command.toUpperCase();
}
var match = err.message.match(err_code);
// LUA script could return user errors that don't behave like all other errors!
if (match) {
err.code = match[1];
}
if (this.pub_sub_mode === false && queue_len === 0) {
this.command_queue = new Queue();
this.emit("idle");

6
test/commands/eval.spec.js

@ -52,7 +52,11 @@ describe("The 'eval' method", function () {
it('converts lua error to an error response', function (done) {
helper.serverVersionAtLeast.call(this, client, [2, 5, 0]);
client.eval("return {err='this is an error'}", 0, helper.isError(done));
client.eval("return {err='this is an error'}", 0, function(err) {
assert(err.code === undefined);
helper.isError()(err);
done();
});
});
it('represents a lua table appropritely', function (done) {

3
test/commands/keys.spec.js

@ -14,6 +14,9 @@ describe("The 'keys' method", function () {
var client;
beforeEach(function (done) {
args = args || {};
// This is going to test if the high water is also respected
args.command_queue_high_water = 100;
client = redis.createClient.apply(redis.createClient, args);
client.once("connect", function () {
client.flushdb(done);

Loading…
Cancel
Save