From 595c7b3cafa1efbcdd89193de0d1adaff9a2be9e Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Fri, 8 May 2026 15:16:45 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8=20Fix=20a=20crash=20if=20the=20Lok?= =?UTF-8?q?i=20initialization=20is=20entirely=20skipped?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/db.js | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/lib/db.js b/lib/db.js index df4c1e1..5c5d74b 100644 --- a/lib/db.js +++ b/lib/db.js @@ -24,6 +24,7 @@ Object.assign(config.storage, { }, loadDb() { db = config.storage.getDb(); + installCleanupTimer(); return q.ninvoke(db, 'loadDatabase', {}) .then(upgradeDb); } @@ -292,28 +293,31 @@ function updateDocument(doc, update) { } } -setInterval(function envCleanExpired() { - var env = db.getCollection('env'); - var values = env.get(1); - var expiration = env.get(2); - var dirty = false; - if (expiration) { - for (var name in expiration.data) { - if (Date.now() > expiration.data[name]) { - dirty = true; - if (values.data[name]) { - delete values.data[name]; +function installCleanupTimer() { + setInterval(function envCleanExpired() { + if (!db) return; + var env = db.getCollection('env'); + var values = env.get(1); + var expiration = env.get(2); + var dirty = false; + if (expiration) { + for (var name in expiration.data) { + if (Date.now() > expiration.data[name]) { + dirty = true; + if (values.data[name]) { + delete values.data[name]; + } + delete expiration.data[name]; } - delete expiration.data[name]; } } - } - if (dirty) { - env.update(values); - env.update(expiration); - } -}, 10000); - + if (dirty) { + env.update(values); + env.update(expiration); + } + }, 10000); +} + function getRandomString() { for (var val = Math.floor(Math.random() * 0x10000).toString(16); val.length < 4; val = '0' + val); return val;