From 578056eeb58b636facf27aa95dfdbf007f27e5ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pimentel=20Ferreira?= Date: Fri, 7 Jun 2024 12:45:24 +0200 Subject: [PATCH] deal with db push exception and reduce pushes to the file I/O --- src/server/services/counters.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/server/services/counters.js b/src/server/services/counters.js index 69763473d64..36155f6fc03 100644 --- a/src/server/services/counters.js +++ b/src/server/services/counters.js @@ -11,7 +11,7 @@ module.exports = { setTimers, incrementCounters, loadExpressRoutes } // a JSON "database" file is saved in root project directory as counters.json const dbFile = path.join(appRoot.path, 'counters.json') -const db = new JsonDB(new Config(dbFile, true, false, '/')) +const db = new JsonDB(new Config(dbFile, false, false, '/')) // if does not exit or it's empty if (!fs.existsSync(dbFile) || fs.statSync(dbFile).size === 0) { @@ -21,6 +21,9 @@ if (!fs.existsSync(dbFile) || fs.statSync(dbFile).size === 0) { function dbSet (name, val) { return new Promise((resolve, reject) => { db.push('/' + name, val) + .catch(err => { + console.error(`Error setting ${val} to ${name} on DB file ${path.relative(appRoot.path, dbFile)}`) + }) .finally(() => { resolve() }) @@ -30,6 +33,7 @@ function dbSet (name, val) { (async () => { await dbSet('requestsCounterPerHour', 0) await dbSet('requestsCounterPerDay', 0) + await db.save() })() function setTimers () { @@ -39,6 +43,7 @@ function setTimers () { await dbSet('requestsLastHour', requestsCounterPerHour) } catch {} finally { await dbSet('requestsCounterPerHour', 0) + await db.save() } }, 1000 * 60 * 60) @@ -48,6 +53,7 @@ function setTimers () { await dbSet('requestsLastDay', requestsCounterPerDay) } catch {} finally { await dbSet('requestsCounterPerDay', 0) + await db.save() } }, 1000 * 60 * 60 * 24) } @@ -60,6 +66,8 @@ async function incrementCounters () { const requestsCounterPerDay = await db.getData('/requestsCounterPerDay') debug('requestsCounterPerDay: ' + requestsCounterPerDay.toString()) await dbSet('requestsCounterPerDay', requestsCounterPerDay + 1) + + await db.save() } function loadExpressRoutes (app) {