У меня есть код ниже для выполнения транзакции. Я получаю сообщение об ошибке типа message:ORA-00060: deadlock detected while waiting for resource
. Но если то же самое выполняется во второй раз, он работает нормально. Код кажется глючным в любом месте?
async transactionData(postData) {
var options = {
autoCommit: false
};
return new Promise(async (resolve, reject) => {
try {
let transactionError = false;
let connection = await this.getConnection();
let transactionErrorMsg = '';
for (let i = 0; i < postData.length; i++) {
const sql = postData[i].query;
const binds = postData[i].binds;
try {
await connection.execute(sql, binds, options);
} catch (e) {
transactionErrorMsg = e.message;
transactionError = true;
console.log('Transaction error', transactionErrorMsg);
logger.error(transactionErrorMsg);
break;
}
}
if (transactionError) {
connection.rollback((err) => {
if (err) {
resolve({ "status": false, "message": err })
} else {
resolve({ "status": false, "message": `Transaction failed due to ${transactionErrorMsg}` })
}
});
} else {
connection.commit((err) => {
if (err) {
resolve({ "status": false, "message": err })
} else {
resolve({ "status": true, "message": 'Transaction passed' })
}
});
}
connection.release();
} catch (e) {
resolve({ "status": false, "message": e.message })
}
})
}