I have an nodejs application that using oracledb module to connect many oracle database. This application is monitoring all databases in one place.
But there is a problem. I am creating a file to connect to oracle db and execute sql's. I am using this file to connect to databases. For example:
let conections = [];
function connectToDb(dbid, connStr){
const oracledb = require('oracledb');
oracledb.outFormat = oracledb.OUT_FORMAT_OBJECT;
oracledb.poolMax = 10;
oracledb.poolMin = 1;
oracledb.createPool(connStr).then((conn) => {
conections[dbid] = dbid;
});
}
function executeSql(dbid, sql, callback){
conections[dbid].getConnection().then(conn => {
conn.execute(qry, params, function(err, rows) {
callback(rows);
});
});
}
connectToDb(1, {......});
connectToDb(2, {......});
connectToDb(3, {......});
executeSql(1, 'select * from ....', function(){...}); //response time 1 sn everthing is okey
executeSql(2, 'select * from ....', function(){...}); //response a long time. Than i am getting queue timeout error
executeSql(3, 'select * from ....', function(){...}); //it not working a while time!!
executeSql(1, 'select * from ....', function(){...}); //it not working a while time!!
//this functions are async. Please assume that there is setInterval function.
in this code, everthing is okey but when an database get NJS-040: connection request timeout. Request exceeded queueTimeout of 60000
error for one database, all databases are effecting by this situation.
I think these connections not isolated and I think that if I can create isolated connections this stuation will be solve. For example can i using import instead of require?
Thank you for your helps
At some point you have to:
Otherwise you're essentially opening a new connection to the database pool without closing the other connections. I ran into this problem myself re-coding an API.