Stop switching to a different datasource per workspace (#3425)

* Stop switching to a different datasource per workspace

* Add console

* Remove call to metadata
This commit is contained in:
Charles Bochet
2024-01-14 00:21:21 +01:00
committed by GitHub
parent 95326b2828
commit 8893cbc05d
25 changed files with 83 additions and 32 deletions

View File

@ -37,27 +37,35 @@ export class TypeORMService implements OnModuleInit, OnModuleDestroy {
public async connectToDataSource(
dataSource: DataSourceEntity,
): Promise<DataSource | undefined> {
// Wait for a bit before trying again if another initialization is in progress
while (this.isDatasourceInitializing.get(dataSource.id)) {
await new Promise((resolve) => setTimeout(resolve, 10));
const isMultiDatasourceEnabled = false;
console.log('Data sources number', this.dataSources.size);
if (isMultiDatasourceEnabled) {
// Wait for a bit before trying again if another initialization is in progress
while (this.isDatasourceInitializing.get(dataSource.id)) {
await new Promise((resolve) => setTimeout(resolve, 10));
}
if (this.dataSources.has(dataSource.id)) {
return this.dataSources.get(dataSource.id);
}
this.isDatasourceInitializing.set(dataSource.id, true);
try {
const dataSourceInstance =
await this.createAndInitializeDataSource(dataSource);
this.dataSources.set(dataSource.id, dataSourceInstance);
return dataSourceInstance;
} finally {
this.isDatasourceInitializing.delete(dataSource.id);
}
}
if (this.dataSources.has(dataSource.id)) {
return this.dataSources.get(dataSource.id);
}
this.isDatasourceInitializing.set(dataSource.id, true);
try {
const dataSourceInstance =
await this.createAndInitializeDataSource(dataSource);
this.dataSources.set(dataSource.id, dataSourceInstance);
return dataSourceInstance;
} finally {
this.isDatasourceInitializing.delete(dataSource.id);
}
return this.mainDataSource;
}
private async createAndInitializeDataSource(