Socket
Socket
Sign inDemoInstall

memcached

Package Overview
Dependencies
Maintainers
1
Versions
33
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

memcached - npm Package Compare versions

Comparing version 0.2.0 to 0.2.1

examples/queue_limit.js

2

AUTHORS.md

@@ -8,2 +8,4 @@ # Authors and contributors of the node Memcached driver project in alphabetical order.

- Jan Krems
- Jason Pearlman
- Joseph Mordetsky
- Near Privman

@@ -10,0 +12,0 @@ - Nebojsa Sabovic

73

lib/memcached.js

@@ -74,3 +74,4 @@ "use strict";

, maxValue: 1048576 // max length of value allowed by Memcached
, activeQueries: 0
, maxQueueSize: -1
, algorithm: 'crc32' // hashing algorithm that is used for key mapping

@@ -109,3 +110,3 @@

if (server in this.issues && this.issues[server].failed) {
return callback(false, false);
return callback(false, false);
}

@@ -215,2 +216,3 @@

while (i--) {
//memcached.delegateCallback(this, servers[i], map[servers[i]], i, servers.length, callback);
callback.call(this, servers[i], map[servers[i]], i, servers.length);

@@ -223,5 +225,14 @@ }

memcached.command = function memcachedCommand(queryCompiler, server) {
// generate a regular query,
var query = queryCompiler()
, redundancy = this.redundancy && this.redundancy < this.servers.length
this.activeQueries++;
var query = queryCompiler();
if (this.activeQueries> this.maxQueueSize && this.maxQueueSize > 0){
this.makeCallback(query.callback, "over queue limit", null);
query = null;
return;
}
// generate a regular query,
var redundancy = this.redundancy && this.redundancy < this.servers.length
, queryRedundancy = query.redundancyEnabled

@@ -231,3 +242,6 @@ , memcached = this;

// validate the arguments
if (query.validate && !Utils.validateArg(query, this)) return;
if (query.validate && !Utils.validateArg(query, this)) {
this.activeQueries--;
return;
}

@@ -252,3 +266,3 @@ // try to find the correct server for this query

if (server in this.issues && this.issues[server].failed) {
return query.callback && query.callback(new Error('Server not available'));
return query.callback && memcached.makeCallback(query.callback,new Error('Server not available'));
}

@@ -264,7 +278,7 @@

// check for issues
if (error) return query.callback && query.callback(error);
if (!S) return query.callback && query.callback(new Error('Connect did not give a server'));
if (error) return query.callback && memcached.makeCallback(query.callback,error);
if (!S) return query.callback && memcached.makeCallback(query.callback,new Error('Connect did not give a server'));
if (S.readyState !== 'open') {
return query.callback && query.callback(new Error('Connection readyState is set to ' + S.readySate));
return query.callback && memcached.makeCallback(query.callback,new Error('Connection readyState is set to ' + S.readySate));
}

@@ -287,3 +301,5 @@

redundancy.forEach(function each(server) {
if (server in memcached.issues && memcached.issues[server].failed) return;
if (server in memcached.issues && memcached.issues[server].failed){
return;
}

@@ -594,2 +610,16 @@ memcached.connect(server, function allocateMemcachedConnection(error, S) {

memcached.delegateCallback = function(){
this.activeQueries--;
var master = arguments[0];
var cb = arguments[arguments.length-1];
var args = Array.prototype.slice.call(arguments, 1, arguments.length-1);
cb.apply(master, args);
};
memcached.makeCallback = function(cb){
this.activeQueries--;
var args = Array.prototype.slice.call(arguments, 1);
cb.apply(this, args); //loose first
};
// The actual parsers function that scan over the responseBuffer in search of

@@ -645,3 +675,3 @@ // Memcached response identifiers. Once we have found one, we will send it to

metaData.execution = Date.now() - metaData.start;
metaData.callback.call(
this.delegateCallback(
metaData

@@ -654,3 +684,4 @@ , err.length ? err : err[0]

: !Array.isArray(queue) || queue.length > 1 ? queue : queue[0]
);
,metaData.callback
);
}

@@ -666,3 +697,3 @@

metaData.execution = Date.now() - metaData.start;
metaData.callback.call(metaData, err.length > 1 ? err : err[0], resultSet[0]);
this.delegateCallback(metaData, err.length > 1 ? err : err[0], resultSet[0], metaData.callback);
}

@@ -678,3 +709,3 @@

metaData.execution = Date.now() - metaData.start;
metaData.callback.call(metaData, new Error('Unknown response from the memcached server: "' + token + '"'), false);
this.delegateCallback(metaData, new Error('Unknown response from the memcached server: "' + token + '"'), false, metaData.callback);
}

@@ -694,3 +725,5 @@ }

privates.errorResponse = function errorResponse(error, callback) {
if (typeof callback === 'function') callback(error, false);
if (typeof callback === 'function') {
this.makeCallback(callback,error, false);
}

@@ -747,3 +780,5 @@ return false;

if (!--calls) callback(errors.length ? errors : false, responses);
if (!--calls){
callback(errors.length ? errors : false, responses);
}
}

@@ -950,3 +985,5 @@

// multi calls should ALWAYS return an array!
if (!--calls) callback(errors && errors.length ? errors.pop() : undefined, responses);
if (!--calls) {
callback(errors && errors.length ? errors.pop() : undefined, responses )
}
}

@@ -953,0 +990,0 @@

@@ -7,4 +7,3 @@ "use strict";

exports.validateArg = function validateArg (args, config) {
var err
, callback;
var err;

@@ -62,3 +61,3 @@ args.validate.forEach(function (tokens) {

// also make sure you update the command
args.command.replace(value, args[key]);
args.command = args.command.replace(value, args[key]);
} else {

@@ -81,3 +80,3 @@ err = 'Argument "' + key + '" is longer than the maximum allowed length of ' + config.maxKeySize;

if (err){
if(callback) callback(err, false);
if(args.callback) args.callback(new Error(err));
return false;

@@ -84,0 +83,0 @@ }

{
"name": "memcached"
, "version": "0.2.0"
, "version": "0.2.1"
, "author": "Arnout Kazemier"

@@ -5,0 +5,0 @@ , "description": "A fully featured Memcached API client, supporting both single and clustered Memcached servers through consistent hashing and failover/failure. Memcached is rewrite of nMemcached, which will be deprecated in the near future."

@@ -541,2 +541,51 @@ /**

});
/**
* Make sure long keys are hashed
*/
it("make sure you can get really long strings", function(done) {
var memcached = new Memcached(common.servers.single)
, message = 'VALUE hello, I\'m not really a value.'
, testnr = "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"+(++global.testnumbers)
, callbacks = 0;
memcached.set("test:" + testnr, message, 1000, function(error, ok){
++callbacks;
assert.ok(!error);
ok.should.be.true;
memcached.get("test:" + testnr, function(error, answer){
++callbacks;
assert.ok(!error);
assert.ok(typeof answer === 'string');
answer.should.eql(message);
memcached.end(); // close connections
assert.equal(callbacks, 2);
done();
});
});
});
/**
* Make sure keys with spaces return an error
*/
it("errors on spaces in strings", function(done) {
var memcached = new Memcached(common.servers.single)
, message = 'VALUE hello, I\'m not really a value.'
, testnr = " "+(++global.testnumbers)
, callbacks = 0;
memcached.set("test:" + testnr, message, 1000, function(error, ok){
++callbacks;
assert.ok(error);
assert.ok(error.message == 'The key should not contain any whitespace or new lines')
done();
});
});
});

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc