I have created the express server application which connect to oracle database in order to perform DB operations. That application works fine in dev environment and then I published it in ubuntu vm using pm2. Initially it works fine but after few hours getConnection('hr') method hang the request.
Inside application, First I create the oracledb connection pool at the startup of the express app. Here is the code for connection pool.
const initialize = async () => {
const pool = await oracledb.createPool({
user: 'username',
password: 'password',
connectString: 'x.x.x.x:1521/sampledev',
poolMin: 5,
poolMax: 10,
poolIncrement: 1,
poolAlias: "hr",
});
console.log("Connected to the oracle db pool");
}
Here is the endpoint that use oracle connection.
app.get('/dbstatus', async (req, res) => {
try {
oracleConnApps = await oracledb.getConnection('hr');
console.log("DB Connected")
// do stuff
res.status(200).send({ status: true, data: "OK" });
} catch (err) {
console.log("CATCH EXECUTE")
console.log({ status: true, data: err.message })
res.status(400).send({ status: false, data: err.message });
} finally {
console.log("FINALLY EXECUTE")
if (oracleConnApps) await oracleConnApps.close();
}
})
After few hours getConnection method hang the server and it does not trigger the catch block.
I used oracledb: 6.2.0 version and thin mode to connect DB.