Socket
Socket
Sign inDemoInstall

generic-pool

Package Overview
Dependencies
Maintainers
2
Versions
74
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

generic-pool - npm Package Compare versions

Comparing version 2.2.1 to 2.2.2

31

lib/generic-pool.js

@@ -108,2 +108,3 @@ var PriorityQueue = function(size) {

availableObjects = [],
inUseObjects = [],
waitingClients = new PriorityQueue(factory.priorityRange || 1),

@@ -154,2 +155,7 @@ count = 0,

});
inUseObjects = inUseObjects.filter(function(obj) {
return (obj !== obj);
});
factory.destroy(obj);

@@ -252,2 +258,3 @@

availableObjects.shift();
inUseObjects.push(objWithTimeout.obj);
clientCb = waitingClients.dequeue();

@@ -285,2 +292,3 @@ return clientCb(err, objWithTimeout.obj);

} else {
inUseObjects.push(obj);
if (clientCb) {

@@ -341,3 +349,3 @@ clientCb(err, obj);

me.release = function (obj) {
// check to see if this object has already been released (i.e., is back in the pool of availableObjects)
// check to see if this object has already been released (i.e., is back in the pool of availableObjects)
if (availableObjects.some(function(objWithTimeout) { return (objWithTimeout.obj === obj); })) {

@@ -347,10 +355,19 @@ log("release called twice for the same resource: " + (new Error().stack), 'error');

}
// check to see if this object exists in the `in use` list and remove it
var index = inUseObjects.indexOf(obj);
if (index < 0) {
log("attempt to release an invalid resource: " + (new Error().stack), 'error');
return;
}
//log("return to pool");
inUseObjects.splice(index, 1);
var objWithTimeout = { obj: obj, timeout: (new Date().getTime() + idleTimeoutMillis) };
if(returnToHead){
availableObjects.splice(0, 0, objWithTimeout);
availableObjects.splice(0, 0, objWithTimeout);
}
else{
availableObjects.push(objWithTimeout);
}
availableObjects.push(objWithTimeout);
}
log("timeout: " + objWithTimeout.timeout, 'verbose');

@@ -474,2 +491,6 @@ dispense();

me.inUseObjectsCount = function() {
return inUseObjects.length;
};
me.waitingClientsCount = function() {

@@ -481,3 +502,3 @@ return waitingClients.size();

return factory.max;
}
};

@@ -484,0 +505,0 @@ // create initial resources (if factory.min > 0)

2

package.json
{
"name": "generic-pool",
"description": "Generic resource pooling for Node.JS",
"version": "2.2.1",
"version": "2.2.2",
"author": "James Cooper <james@bitmechanic.com>",

@@ -6,0 +6,0 @@ "contributors": [

@@ -23,2 +23,5 @@ [![build status](https://secure.travis-ci.org/coopernurse/node-pool.png)](http://travis-ci.org/coopernurse/node-pool)

2.2.2 - December 13 2015
- Merged #106 - fix condition where non "resource pool" created objects could be returned to the pool. (contributed by @devzer01)
2.2.1 - October 30 2015

@@ -25,0 +28,0 @@ - Merged #104 - fix #103 - condition where pool can create > specified max number of connections (contributed by @devzer01)

@@ -616,5 +616,32 @@ var assert = require('assert');

});
}
},
'returns only valid object to the pool': function(beforeExit){
var pool = poolModule.Pool({
name: 'test',
create: function(callback) {
process.nextTick(function(){
callback(null, { id: 'validId' });
});
},
destroy: function(client) {},
max: 1,
idleTimeoutMillis: 100
});
pool.acquire(function(err, obj){
assert.equal(pool.availableObjectsCount(), 0);
assert.equal(pool.inUseObjectsCount(), 1);
// Invalid release
pool.release({});
assert.equal(pool.availableObjectsCount(), 0);
assert.equal(pool.inUseObjectsCount(), 1);
// Valid release
pool.release(obj);
assert.equal(pool.availableObjectsCount(), 1);
assert.equal(pool.inUseObjectsCount(), 0);
});
}
};
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