Skip to content

Commit c05cc10

Browse files
committed
Longer query timeout for refreshing materialized views (#1770)
1 parent ef3baf7 commit c05cc10

File tree

4 files changed

+10
-8
lines changed

4 files changed

+10
-8
lines changed

backend/src/bin/jobs/refreshMaterializedViewsForCube.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Logger, logExecutionTimeV2 } from '@crowd/logging'
2-
import SequelizeRepository from '../../database/repositories/sequelizeRepository'
32
import { CrowdJob } from '../../types/jobTypes'
3+
import { databaseInit } from '../../database/databaseConnection'
44

55
let processing = false
66

@@ -13,7 +13,9 @@ const job: CrowdJob = {
1313
} else {
1414
return
1515
}
16-
const dbOptions = await SequelizeRepository.getDefaultIRepositoryOptions()
16+
17+
// initialize database with 15 minutes query timeout
18+
const database = await databaseInit(1000 * 60 * 15)
1719

1820
const materializedViews = [
1921
'mv_members_cube',
@@ -25,7 +27,7 @@ const job: CrowdJob = {
2527
for (const view of materializedViews) {
2628
await logExecutionTimeV2(
2729
() =>
28-
dbOptions.database.sequelize.query(`REFRESH MATERIALIZED VIEW CONCURRENTLY "${view}"`, {
30+
database.sequelize.query(`REFRESH MATERIALIZED VIEW CONCURRENTLY "${view}"`, {
2931
useMaster: true,
3032
}),
3133
log,

backend/src/database/databaseConnection.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ let cached
55
/**
66
* Initializes the connection to the Database
77
*/
8-
export async function databaseInit() {
8+
export async function databaseInit(queryTimeoutMilliseconds: number = 30000) {
99
if (!cached) {
10-
cached = models()
10+
cached = models(queryTimeoutMilliseconds)
1111
}
1212

1313
return cached

backend/src/database/initializers/create.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import models from '../models'
33

44
const log = getServiceLogger()
55

6-
models()
6+
models(1000 * 30)
77
.sequelize.sync({ alter: true })
88
.then(() => {
99
log.info('Database tables created!')

backend/src/database/models/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ function getCredentials(): Credentials {
4545
}
4646
}
4747

48-
function models() {
48+
function models(queryTimeoutMilliseconds: number) {
4949
const database = {} as any
5050

5151
const credentials = getCredentials()
@@ -59,7 +59,7 @@ function models() {
5959
dialectOptions: {
6060
application_name: SERVICE,
6161
connectionTimeoutMillis: 5000,
62-
query_timeout: 30000,
62+
query_timeout: queryTimeoutMilliseconds,
6363
idle_in_transaction_session_timeout: 10000,
6464
},
6565
port: DB_CONFIG.port,

0 commit comments

Comments
 (0)