diff --git a/packages/cubejs-jdbc-driver/src/JDBCDriver.ts b/packages/cubejs-jdbc-driver/src/JDBCDriver.ts index 136d21c289e07..cb9f58011a2cd 100644 --- a/packages/cubejs-jdbc-driver/src/JDBCDriver.ts +++ b/packages/cubejs-jdbc-driver/src/JDBCDriver.ts @@ -20,10 +20,11 @@ import { promisify } from 'util'; import genericPool, { Factory, Pool } from 'generic-pool'; import path from 'path'; -import { DriverOptionsInterface, SupportedDrivers } from './supported-drivers'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import { JDBCDriverConfiguration } from './types'; -import { QueryStream, nextFn, Row, transformRow } from './QueryStream'; +import { SupportedDrivers } from './supported-drivers'; +import type { DriverOptionsInterface } from './supported-drivers'; +import type { JDBCDriverConfiguration } from './types'; +import { QueryStream, transformRow } from './QueryStream'; +import type { nextFn } from './QueryStream'; /* eslint-disable no-restricted-syntax,import/no-extraneous-dependencies */ const DriverManager = require('@cubejs-backend/jdbc/lib/drivermanager'); @@ -147,8 +148,7 @@ export class JDBCDriver extends BaseDriver { const getConnection = promisify(DriverManager.getConnection.bind(DriverManager)); return new Connection(await getConnection(this.config.url, this.jdbcProps)); }, - // @ts-expect-error Promise vs Promise - destroy: async (connection) => promisify(connection.close.bind(connection)), + destroy: async (connection) => promisify(connection.close.bind(connection))(), validate: async (connection) => ( new Promise((resolve) => { const isValid = promisify(connection.isValid.bind(connection)); @@ -183,6 +183,14 @@ export class JDBCDriver extends BaseDriver { acquireTimeoutMillis: 120000, ...(poolOptions || {}) }) as ExtendedPool; + + // https://github.com/coopernurse/node-pool/blob/ee5db9ddb54ce3a142fde3500116b393d4f2f755/README.md#L220-L226 + this.pool.on('factoryCreateError', (err) => { + this.databasePoolError(err); + }); + this.pool.on('factoryDestroyError', (err) => { + this.databasePoolError(err); + }); } protected async getCustomClassPath() { diff --git a/packages/cubejs-testing-drivers/src/helpers/getDriver.ts b/packages/cubejs-testing-drivers/src/helpers/getDriver.ts index 9e61439c309ad..b1908cbfed3b7 100644 --- a/packages/cubejs-testing-drivers/src/helpers/getDriver.ts +++ b/packages/cubejs-testing-drivers/src/helpers/getDriver.ts @@ -8,6 +8,7 @@ export async function getDriver(type: string): Promise<{ return import(`@cubejs-backend/${type}-driver`).then((module) => { // eslint-disable-next-line new-cap const source: BaseDriver = new module.default(); + source.setLogger((msg: unknown, event: unknown) => console.log(`${msg}: ${JSON.stringify(event)}`)); const storage = new CubeStoreDriver(); return { source, storage }; });