diff --git a/packages/twenty-server/src/engine/twenty-orm/factories/workspace-datasource.factory.ts b/packages/twenty-server/src/engine/twenty-orm/factories/workspace-datasource.factory.ts index 254afad52..f58ef98de 100644 --- a/packages/twenty-server/src/engine/twenty-orm/factories/workspace-datasource.factory.ts +++ b/packages/twenty-server/src/engine/twenty-orm/factories/workspace-datasource.factory.ts @@ -36,6 +36,8 @@ type CacheResult = { data: U; }; +const ONE_HOUR_IN_MS = 3600_000; + @Injectable() export class WorkspaceDatasourceFactory { private readonly logger = new Logger(WorkspaceDatasourceFactory.name); @@ -173,6 +175,16 @@ export class WorkspaceDatasourceFactory { rejectUnauthorized: false, } : undefined, + extra: { + query_timeout: 10000, + // https://node-postgres.com/apis/pool + // TypeORM doesn't allow sharing connection pools bet + // So for now we keep a small pool open for longer + // for each workspace. + idleTimeoutMillis: ONE_HOUR_IN_MS, + max: 4, + allowExitOnIdle: true, + }, }, cachedFeatureFlagMapVersion, cachedFeatureFlagMap,