From 5d6847e533210f713e181146f2e60aaa51b74150 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 16 Jan 2024 16:23:26 +0000 Subject: log missing user --- lib/migrate.js | 23 ++++++++++++----------- lib/utils.js | 4 +++- 2 files changed, 15 insertions(+), 12 deletions(-) (limited to 'lib') diff --git a/lib/migrate.js b/lib/migrate.js index c1533ec3..bb87a28b 100644 --- a/lib/migrate.js +++ b/lib/migrate.js @@ -1,20 +1,21 @@ import { err, warn, l, line } from "$lib/logging"; import { types } from "$lib/payments"; import { archive, db, g, ga, s } from "$lib/db"; + import { wait } from "$lib/utils"; -let q = {}; -let inProgress = {}; +let queued = {}; +let processing = {}; async function migrate(id) { if (id) id = id.replace(/\s/g, "").toLowerCase(); - if (inProgress[id]) return; - else delete q[id]; - inProgress[id] = true; + if (processing[id]) await wait(() => !processing[id]); + delete queued[id]; + processing[id] = true; let user = await g(`user:${id}`); if (typeof user === "string") user = await g(`user:${user}`); if (user) { - delete inProgress[id]; + delete processing[id]; return user; } @@ -75,7 +76,7 @@ async function migrate(id) { if (!p) continue; if (p.type === types.internal && p.ref) { let recipient = await g(`user:${p.ref}`); - if (!recipient) q[p.ref] = true; + if (!recipient) queued[p.ref] = true; } await multi @@ -108,19 +109,19 @@ async function migrate(id) { return user; } - delete inProgress[id]; + delete processing[id]; } let keepMigrating = async () => { try { - if (Object.keys(q).length) { - await migrate(Object.keys(q)[0]); + if (Object.keys(queued).length) { + await migrate(Object.keys(queued)[0]); } } catch (e) { err("problem migrating", e.message); } - setTimeout(keepMigrating, 100); + setTimeout(keepMigrating, 1000); }; keepMigrating(); diff --git a/lib/utils.js b/lib/utils.js index e6aba14a..7b468f3b 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -66,5 +66,7 @@ export let fields = [ ]; export let getUser = async (username) => { - return migrate(username); + let user = await migrate(username); + if (!user || username === "undefined") fail("user not found"); + return user; }; -- cgit v1.2.3