Improve single schema cache (#7214)
* Initial Commit * fix flaky test * temporary set ci timeout * turn off ci check * fix postgres tests * fix tests * node flaky test * remove improvements * Update SchemaPerformance.spec.js * fix tests * revert ci * Create Singleton Object * properly clear cache testing * Cleanup * remove fit * try PushController.spec * try push test rewrite * try push enqueue time * Increase test timeout * remove pg server creation test * xit push tests * more xit * remove skipped tests * Fix conflicts * reduce ci timeout * fix push tests * Revert "fix push tests" This reverts commit 05aba62f1cbbca7d5d3e80b9444529f59407cb56. * improve initialization * fix flaky tests * xit flaky test * Update CHANGELOG.md * enable debug logs * Update LogsRouter.spec.js * create initial indexes in series * lint * horizontal scaling documentation * Update Changelog * change horizontalScaling db option * Add enableSchemaHooks option * move enableSchemaHooks to databaseOptions
This commit is contained in:
@@ -113,12 +113,15 @@ export class MongoStorageAdapter implements StorageAdapter {
|
||||
_uri: string;
|
||||
_collectionPrefix: string;
|
||||
_mongoOptions: Object;
|
||||
_onchange: any;
|
||||
_stream: any;
|
||||
// Public
|
||||
connectionPromise: ?Promise<any>;
|
||||
database: any;
|
||||
client: MongoClient;
|
||||
_maxTimeMS: ?number;
|
||||
canSortOnJoinTables: boolean;
|
||||
enableSchemaHooks: boolean;
|
||||
|
||||
constructor({ uri = defaults.DefaultMongoURI, collectionPrefix = '', mongoOptions = {} }: any) {
|
||||
this._uri = uri;
|
||||
@@ -126,13 +129,20 @@ export class MongoStorageAdapter implements StorageAdapter {
|
||||
this._mongoOptions = mongoOptions;
|
||||
this._mongoOptions.useNewUrlParser = true;
|
||||
this._mongoOptions.useUnifiedTopology = true;
|
||||
this._onchange = () => {};
|
||||
|
||||
// MaxTimeMS is not a global MongoDB client option, it is applied per operation.
|
||||
this._maxTimeMS = mongoOptions.maxTimeMS;
|
||||
this.canSortOnJoinTables = true;
|
||||
this.enableSchemaHooks = !!mongoOptions.enableSchemaHooks;
|
||||
delete mongoOptions.enableSchemaHooks;
|
||||
delete mongoOptions.maxTimeMS;
|
||||
}
|
||||
|
||||
watch(callback: () => void): void {
|
||||
this._onchange = callback;
|
||||
}
|
||||
|
||||
connect() {
|
||||
if (this.connectionPromise) {
|
||||
return this.connectionPromise;
|
||||
@@ -198,7 +208,13 @@ export class MongoStorageAdapter implements StorageAdapter {
|
||||
_schemaCollection(): Promise<MongoSchemaCollection> {
|
||||
return this.connect()
|
||||
.then(() => this._adaptiveCollection(MongoSchemaCollectionName))
|
||||
.then(collection => new MongoSchemaCollection(collection));
|
||||
.then(collection => {
|
||||
if (!this._stream && this.enableSchemaHooks) {
|
||||
this._stream = collection._mongoCollection.watch();
|
||||
this._stream.on('change', () => this._onchange());
|
||||
}
|
||||
return new MongoSchemaCollection(collection);
|
||||
});
|
||||
}
|
||||
|
||||
classExists(name: string) {
|
||||
|
||||
Reference in New Issue
Block a user