Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions backend/src/bin/jobs/refreshMaterializedViewsForCube.ts
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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',
Expand All @@ -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,
Expand Down
4 changes: 2 additions & 2 deletions backend/src/database/databaseConnection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion backend/src/database/initializers/create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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!')
Expand Down
4 changes: 2 additions & 2 deletions backend/src/database/models/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ function getCredentials(): Credentials {
}
}

function models() {
function models(queryTimeoutMilliseconds: number) {
const database = {} as any

const credentials = getCredentials()
Expand All @@ -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,
Expand Down