diff --git a/src/helpers/mysql.ts b/src/helpers/mysql.ts index 63be7c8d..c6b94aee 100644 --- a/src/helpers/mysql.ts +++ b/src/helpers/mysql.ts @@ -6,6 +6,8 @@ import Pool from 'mysql/lib/Pool'; import log from './log'; const connectionLimit = parseInt(process.env.CONNECTION_LIMIT || '25'); +export const QUERY_TIMEOUT_MS = 3e4; // 30 seconds + log.info(`[mysql] connection limit ${connectionLimit}`); // @ts-ignore @@ -17,7 +19,6 @@ hubConfig.host = hubConfig.hosts[0].name; hubConfig.port = hubConfig.hosts[0].port; hubConfig.connectTimeout = 60e3; hubConfig.acquireTimeout = 60e3; -hubConfig.timeout = 60e3; hubConfig.charset = 'utf8mb4'; hubConfig.ssl = { rejectUnauthorized: true }; @@ -32,7 +33,6 @@ sequencerConfig.host = sequencerConfig.hosts[0].name; sequencerConfig.port = sequencerConfig.hosts[0].port; sequencerConfig.connectTimeout = 60e3; sequencerConfig.acquireTimeout = 60e3; -sequencerConfig.timeout = 60e3; sequencerConfig.charset = 'utf8mb4'; sequencerConfig.ssl = { rejectUnauthorized: true }; @@ -40,6 +40,24 @@ const sequencerDB = mysql.createPool(sequencerConfig); bluebird.promisifyAll([Pool, Connection]); +const originalQueryAsync = hubDB.queryAsync; +hubDB.queryAsync = function (sql: string, values?: any) { + return originalQueryAsync.call(this, { + sql: sql, + values: values, + timeout: QUERY_TIMEOUT_MS + }); +}; + +const originalSequencerQueryAsync = sequencerDB.queryAsync; +sequencerDB.queryAsync = function (sql: string, values?: any) { + return originalSequencerQueryAsync.call(this, { + sql: sql, + values: values, + timeout: QUERY_TIMEOUT_MS + }); +}; + export const closeDatabase = (): Promise => { return new Promise(resolve => { hubDB.end(() => {