diff --git a/backend/src/bin/jobs/refreshMaterializedViewsForCube.ts b/backend/src/bin/jobs/refreshMaterializedViewsForCube.ts index 7abacaa2de..1b9a2aab10 100644 --- a/backend/src/bin/jobs/refreshMaterializedViewsForCube.ts +++ b/backend/src/bin/jobs/refreshMaterializedViewsForCube.ts @@ -1,6 +1,6 @@ import { Logger, logExecutionTimeV2 } from '@crowd/logging' -import SequelizeRepository from '../../database/repositories/sequelizeRepository' import { CrowdJob } from '../../types/jobTypes' +import { databaseInit } from '../../database/databaseConnection' let processing = false @@ -13,7 +13,9 @@ const job: CrowdJob = { } else { return } - const dbOptions = await SequelizeRepository.getDefaultIRepositoryOptions() + + // initialize database with 15 minutes query timeout + const database = await databaseInit(1000 * 60 * 15) const materializedViews = [ 'mv_members_cube', @@ -25,7 +27,7 @@ const job: CrowdJob = { for (const view of materializedViews) { await logExecutionTimeV2( () => - dbOptions.database.sequelize.query(`REFRESH MATERIALIZED VIEW CONCURRENTLY "${view}"`, { + database.sequelize.query(`REFRESH MATERIALIZED VIEW CONCURRENTLY "${view}"`, { useMaster: true, }), log, diff --git a/backend/src/database/databaseConnection.ts b/backend/src/database/databaseConnection.ts index b1672d88e7..fb7a799e8a 100644 --- a/backend/src/database/databaseConnection.ts +++ b/backend/src/database/databaseConnection.ts @@ -5,9 +5,9 @@ let cached /** * Initializes the connection to the Database */ -export async function databaseInit() { +export async function databaseInit(queryTimeoutMilliseconds: number = 30000) { if (!cached) { - cached = models() + cached = models(queryTimeoutMilliseconds) } return cached diff --git a/backend/src/database/initializers/create.ts b/backend/src/database/initializers/create.ts index 55373c3b1b..7585bb5fa2 100644 --- a/backend/src/database/initializers/create.ts +++ b/backend/src/database/initializers/create.ts @@ -3,7 +3,7 @@ import models from '../models' const log = getServiceLogger() -models() +models(1000 * 30) .sequelize.sync({ alter: true }) .then(() => { log.info('Database tables created!') diff --git a/backend/src/database/models/index.ts b/backend/src/database/models/index.ts index f477f16cd6..947f3de616 100644 --- a/backend/src/database/models/index.ts +++ b/backend/src/database/models/index.ts @@ -45,7 +45,7 @@ function getCredentials(): Credentials { } } -function models() { +function models(queryTimeoutMilliseconds: number) { const database = {} as any const credentials = getCredentials() @@ -59,7 +59,7 @@ function models() { dialectOptions: { application_name: SERVICE, connectionTimeoutMillis: 5000, - query_timeout: 30000, + query_timeout: queryTimeoutMilliseconds, idle_in_transaction_session_timeout: 10000, }, port: DB_CONFIG.port,