aboutsummaryrefslogtreecommitdiffstats
path: root/lib/migrate.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/migrate.js')
-rw-r--r--lib/migrate.js23
1 files changed, 12 insertions, 11 deletions
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();