Skip to content

Commit

Permalink
Fix env backward compatibility for MongoBI connector
Browse files Browse the repository at this point in the history
  • Loading branch information
paveltiunov committed Apr 17, 2019
1 parent 3b2a22b commit f1ebfca
Showing 1 changed file with 42 additions and 46 deletions.
88 changes: 42 additions & 46 deletions packages/cubejs-mongobi-driver/driver/MongoBIDriver.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,20 @@ class MongoBIDriver extends BaseDriver {
constructor(config) {
super();

let ssl = {};

if (process.env.CUBEJS_DB_SSL) {
ssl = process.env.CUBEJS_DB_SSL;
} else {
const sslOptions = [
{ name: 'ca', value: 'CUBEJS_DB_SSL_CA' },
{ name: 'cert', value: 'CUBEJS_DB_SSL_CERT' },
{ name: 'ciphers', value: 'CUBEJS_DB_SSL_CIPHERS' },
{ name: 'passphrase', value: 'CUBEJS_DB_SSL_PASSPHRASE' },
];

let ssl;

const sslOptions = [
{ name: 'ca', value: 'CUBEJS_DB_SSL_CA' },
{ name: 'cert', value: 'CUBEJS_DB_SSL_CERT' },
{ name: 'ciphers', value: 'CUBEJS_DB_SSL_CIPHERS' },
{ name: 'passphrase', value: 'CUBEJS_DB_SSL_PASSPHRASE' },
];

if (
process.env.CUBEJS_DB_SSL ||
process.env.CUBEJS_DB_SSL_REJECT_UNAUTHORIZED ||
sslOptions.find(o => !!process.env[o.value])
) {
ssl = sslOptions.reduce(
(agg, { name, value }) => ({
...agg,
Expand Down Expand Up @@ -51,17 +53,17 @@ class MongoBIDriver extends BaseDriver {
const conn = mysql.createConnection(this.config);
const connect = promisify(conn.connect.bind(conn));

conn.on && conn.on('error', (err) => {
conn.destroy();
});
if (conn.on) {
conn.on('error', () => {
conn.destroy();
});
}
conn.execute = promisify(conn.query.bind(conn));

await connect();
return conn;
},
destroy: (connection) => {
return promisify(connection.end.bind(connection))();
},
destroy: (connection) => promisify(connection.end.bind(connection))(),
validate: async (connection) => {
try {
await connection.execute('SELECT 1');
Expand Down Expand Up @@ -90,52 +92,46 @@ class MongoBIDriver extends BaseDriver {
const promise = connectionPromise.then(conn => {
cancelObj.cancel = async () => {
cancelled = true;
await self.withConnection(async conn => {
const processRows = await conn.execute('SHOW PROCESSLIST');
await Promise.all(processRows.filter(row => row.Time >= 599).map(row => {
return conn.execute(`KILL ${row.Id}`);
}));
await self.withConnection(async processConnection => {
const processRows = await processConnection.execute('SHOW PROCESSLIST');
await Promise.all(processRows.filter(row => row.Time >= 599)
.map(row => processConnection.execute(`KILL ${row.Id}`)));
});
};
return fn(conn)
.then(res => {
return this.pool.release(conn).then(() => {
if (cancelled) {
throw new Error('Query cancelled');
}
return res;
});
})
.catch((err) => {
return this.pool.release(conn).then(() => {
if (cancelled) {
throw new Error('Query cancelled');
}
throw err;
});
})
.then(res => this.pool.release(conn).then(() => {
if (cancelled) {
throw new Error('Query cancelled');
}
return res;
}))
.catch((err) => this.pool.release(conn).then(() => {
if (cancelled) {
throw new Error('Query cancelled');
}
throw err;
}));
});
promise.cancel = () => cancelObj.cancel();
return promise;
}

async testConnection() {
// eslint-disable-next-line no-underscore-dangle
const conn = await this.pool._factory.create();
try {
return await conn.execute('SELECT 1');
} finally {
// eslint-disable-next-line no-underscore-dangle
await this.pool._factory.destroy(conn);
}
}

query(query, values) {
const self = this;
return this.withConnection(db => {

return db.execute(`SET time_zone = '${self.config.storeTimezone || '+00:00'}'`, [])
.then(() => db.execute(query, values))
.then(res => res);
});
return this.withConnection(db => db.execute(`SET time_zone = '${self.config.storeTimezone || '+00:00'}'`, [])
.then(() => db.execute(query, values))
.then(res => res));
}

async release() {
Expand All @@ -144,7 +140,7 @@ class MongoBIDriver extends BaseDriver {
}

informationSchemaQuery() {
return `${super.informationSchemaQuery()} AND columns.table_schema = '${this.config.database}'`
return `${super.informationSchemaQuery()} AND columns.table_schema = '${this.config.database}'`;
}
}

Expand Down

0 comments on commit f1ebfca

Please sign in to comment.