aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-01-25 04:50:34 -0800
committerAdam Soltys <[email protected]>2024-01-25 04:50:43 -0800
commitad274f2488dfc70aae1fd9eabc6ea9f237c565f1 (patch)
treee3b289d2a53c362fc767717c205bf7fca5cde6cb
parent56d32950584c88d11c3eeaa1d08f46fee99134ba (diff)
downloadcoinos-server-ad274f2488dfc70aae1fd9eabc6ea9f237c565f1.tar.gz
coinos-server-ad274f2488dfc70aae1fd9eabc6ea9f237c565f1.zip
move migration lock
-rw-r--r--lib/migrate.js16
1 files changed, 6 insertions, 10 deletions
diff --git a/lib/migrate.js b/lib/migrate.js
index 7a649dbf..1425cbac 100644
--- a/lib/migrate.js
+++ b/lib/migrate.js
@@ -4,19 +4,14 @@ import { archive, db, g, ga, s } from "$lib/db";
import { wait } from "$lib/utils";
let queued = {};
-let processing = {};
+let migrating = {};
async function migrate(id) {
if (id) id = id.replace(/\s/g, "").toLowerCase();
- if (processing[id]) await wait(() => !processing[id]);
- delete queued[id];
- processing[id] = true;
- setTimeout(() => delete processing[id], 10000);
-
let user = await g(`user:${id}`);
if (typeof user === "string") user = await g(`user:${user}`);
if (user) {
- delete processing[id];
+ delete migrating[id];
return user;
}
@@ -33,6 +28,9 @@ async function migrate(id) {
}
if (user) {
+ if (migrating[id]) return;
+ migrating[id] = true;
+
let { username } = user;
username = username.replace(/\s/g, "").toLowerCase();
l("migrating", username);
@@ -107,11 +105,9 @@ async function migrate(id) {
warn("failed to migrate", username, e.message, line());
}
- delete processing[id];
+ delete migrating[id];
return user;
}
-
- delete processing[id];
}
let keepMigrating = async () => {