From 23822ea2f56a1af8fdd7a965c9222269d171d864 Mon Sep 17 00:00:00 2001 From: undefined Date: Fri, 29 Oct 2021 21:46:13 +0800 Subject: [PATCH] core: upgrade: fix race condition --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/upgrade.ts | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 5b59845c6..29b7adb78 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "3.1.18", + "version": "3.1.19", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/upgrade.ts b/packages/hydrooj/src/upgrade.ts index 4fbdf1037..859bd5f19 100644 --- a/packages/hydrooj/src/upgrade.ts +++ b/packages/hydrooj/src/upgrade.ts @@ -602,13 +602,13 @@ const scripts: UpgradeScript[] = [ ).toArray(); for (const ctdoc of ctdocs) { if (!ctdoc.journal?.filter((i) => isStringPid(i.pid)).length) continue; - const $set = { - journal: await Promise.all(ctdoc.journal.map(async (i) => { - const pdoc = await getProblem(doc.domainId, i.pid); - if (pdoc) i.pid = pdoc.docId; - return i; - })), - }; + const journal = []; + for (const i of ctdoc.journal) { + const pdoc = await getProblem(doc.domainId, i.pid); + if (pdoc) i.pid = pdoc.docId; + journal.push(i); + } + const $set = { journal }; await document.setStatus(doc.domainId, doc.docType, doc.docId, ctdoc.uid, $set); } await contest.edit(doc.domainId, doc.docId, { pids });