Merge pull request #1767 from strongloop/dremond_migrate_errors
fix: prevent max listeners warning
This commit is contained in:
commit
a90dc0eac4
|
@ -194,6 +194,11 @@ util.inherits(DataSource, EventEmitter);
|
||||||
// allow child classes to supply a data access object
|
// allow child classes to supply a data access object
|
||||||
DataSource.DataAccessObject = DataAccessObject;
|
DataSource.DataAccessObject = DataAccessObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Global maximum number of event listeners
|
||||||
|
*/
|
||||||
|
DataSource.DEFAULT_MAX_OFFLINE_REQUESTS = 16;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set up the connector instance for backward compatibility with JugglingDB schema/adapter
|
* Set up the connector instance for backward compatibility with JugglingDB schema/adapter
|
||||||
* @private
|
* @private
|
||||||
|
@ -207,6 +212,10 @@ DataSource.prototype._setupConnector = function() {
|
||||||
this.connector.dataSource = this;
|
this.connector.dataSource = this;
|
||||||
}
|
}
|
||||||
const dataSource = this;
|
const dataSource = this;
|
||||||
|
|
||||||
|
// Set max listeners to a default/configured value
|
||||||
|
dataSource.setMaxListeners(dataSource.getMaxOfflineRequests());
|
||||||
|
|
||||||
this.connector.log = function(query, start) {
|
this.connector.log = function(query, start) {
|
||||||
dataSource.log(query, start);
|
dataSource.log(query, start);
|
||||||
};
|
};
|
||||||
|
@ -2699,6 +2708,27 @@ DataSource.prototype.beginTransaction = function(options) {
|
||||||
return Transaction.begin(this.connector, options);
|
return Transaction.begin(this.connector, options);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the maximum number of event listeners
|
||||||
|
*/
|
||||||
|
DataSource.prototype.getMaxOfflineRequests = function() {
|
||||||
|
// Set max listeners to a default value
|
||||||
|
// Override this default value with a datasource setting
|
||||||
|
// 'maxOfflineRequests' from an application's datasources.json
|
||||||
|
|
||||||
|
let maxOfflineRequests = DataSource.DEFAULT_MAX_OFFLINE_REQUESTS;
|
||||||
|
if (
|
||||||
|
this.settings &&
|
||||||
|
this.settings.maxOfflineRequests
|
||||||
|
) {
|
||||||
|
if (typeof this.settings.maxOfflineRequests !== 'number')
|
||||||
|
throw new Error('maxOfflineRequests must be a number');
|
||||||
|
|
||||||
|
maxOfflineRequests = this.settings.maxOfflineRequests;
|
||||||
|
}
|
||||||
|
return maxOfflineRequests;
|
||||||
|
};
|
||||||
|
|
||||||
/*! The hidden property call is too expensive so it is not used that much
|
/*! The hidden property call is too expensive so it is not used that much
|
||||||
*/
|
*/
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -545,6 +545,28 @@ describe('DataSource', function() {
|
||||||
ds.connector.should.equal(connector);
|
ds.connector.should.equal(connector);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('getMaxOfflineRequests', () => {
|
||||||
|
let ds;
|
||||||
|
beforeEach(() => ds = new DataSource('ds', {connector: 'memory'}));
|
||||||
|
|
||||||
|
it('sets the default maximum number of event listeners to 16', () => {
|
||||||
|
ds.getMaxOfflineRequests().should.be.eql(16);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('uses provided number of listeners', () => {
|
||||||
|
ds.settings.maxOfflineRequests = 17;
|
||||||
|
ds.getMaxOfflineRequests().should.be.eql(17);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('throws an error if a non-number is provided for the max number of listeners', () => {
|
||||||
|
ds.settings.maxOfflineRequests = '17';
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
return ds.getMaxOfflineRequests();
|
||||||
|
}).should.throw('maxOfflineRequests must be a number');
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function givenMockConnector(props) {
|
function givenMockConnector(props) {
|
||||||
|
|
Loading…
Reference in New Issue