kv-memory: fix crash in regular cleanup
Fix bug in "_setupRegularCleanup()" where the interval callback was trying to access an object that has been garbage-collected in the meantime.
This commit is contained in:
parent
8e81185375
commit
4978cd8089
|
@ -31,8 +31,15 @@ KeyValueMemoryConnector.prototype._setupRegularCleanup = function() {
|
|||
// key expiration too, the scheduled cleanup is merely a performance
|
||||
// optimization.
|
||||
var self = this;
|
||||
this._cleanupTimer = setInterval(
|
||||
function() { self._removeExpiredItems(); },
|
||||
var timer = this._cleanupTimer = setInterval(
|
||||
function() {
|
||||
if (self && self._removeExpiredItems) {
|
||||
self._removeExpiredItems();
|
||||
} else {
|
||||
// The datasource/connector was destroyed - cancel the timer
|
||||
clearInterval(timer);
|
||||
}
|
||||
},
|
||||
1000);
|
||||
this._cleanupTimer.unref();
|
||||
};
|
||||
|
|
|
@ -2,15 +2,9 @@ var kvMemory = require('../lib/connectors/kv-memory');
|
|||
var DataSource = require('..').DataSource;
|
||||
|
||||
describe('KeyValue-Memory connector', function() {
|
||||
var lastDataSource;
|
||||
var dataSourceFactory = function() {
|
||||
lastDataSource = new DataSource({ connector: kvMemory });
|
||||
return lastDataSource;
|
||||
return new DataSource({ connector: kvMemory });
|
||||
};
|
||||
|
||||
afterEach(function disconnectKVMemoryConnector() {
|
||||
if (lastDataSource) return lastDataSource.disconnect();
|
||||
});
|
||||
|
||||
require('./kvao.suite')(dataSourceFactory);
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue