fixed sync

This commit is contained in:
azivner
2017-11-28 18:33:23 -05:00
parent 91c2f9e7cb
commit cd90200272
4 changed files with 13 additions and 9 deletions

View File

@@ -122,38 +122,43 @@ async function wrap(func) {
}
}
let transactionActive = false;
let transactionPromise = null;
async function doInTransaction(func) {
while (transactionPromise !== null) {
while (transactionActive) {
await transactionPromise;
}
const error = new Error(); // to capture correct stack trace in case of exception
transactionActive = true;
transactionPromise = new Promise(async (resolve, reject) => {
try {
await beginTransaction();
await func();
await commit();
transactionActive = false;
resolve();
transactionPromise = null;
}
catch (e) {
log.error("Error executing transaction, executing rollback. Inner exception: " + e.stack + error.stack);
await rollback();
transactionActive = false;
resolve();
transactionPromise = null;
throw e;
}
});
if (transactionActive) {
await transactionPromise;
}
}
dbReady