mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 09:36:08 +08:00
judge: bug fixes
This commit is contained in:
3 files changed
+18
-12
No files matched your search
@@ -65,6 +65,10 @@ export default class Hydro implements Session {
|
||||
});
|
||||
if (!res.body.links) throw new FormatError('problem not exist');
|
||||
const queue = new PQueue({ concurrency: 10 });
|
||||
let error = null;
|
||||
queue.on('error', (e) => {
|
||||
error = e;
|
||||
});
|
||||
for (const name in res.body.links) {
|
||||
queue.add(async () => {
|
||||
if (name.includes('/')) await fs.ensureDir(path.dirname(files[name]));
|
||||
@@ -73,6 +77,7 @@ export default class Hydro implements Session {
|
||||
});
|
||||
}
|
||||
await queue.onIdle();
|
||||
if (error) throw error;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -154,8 +154,10 @@ export class JudgeResultCallbackContext {
|
||||
}
|
||||
|
||||
const rdoc = await record.update(this.task.domainId, new ObjectId(this.task.rid as string), $set, $push, $unset);
|
||||
if (rdoc) bus.broadcast('record/change', rdoc, null, null, body); // trigger a full update
|
||||
await JudgeResultCallbackContext.postJudge(rdoc, this);
|
||||
if (rdoc) {
|
||||
bus.broadcast('record/change', rdoc, null, null, body); // trigger a full update
|
||||
await JudgeResultCallbackContext.postJudge(rdoc, this);
|
||||
}
|
||||
this.resolve(rdoc);
|
||||
}
|
||||
|
||||
@@ -165,8 +167,10 @@ export class JudgeResultCallbackContext {
|
||||
$set.judgeAt = new Date();
|
||||
$set.judger = body.judger ?? 1;
|
||||
const rdoc = await record.update(domainId, rid, $set, $push, $unset);
|
||||
if (rdoc) app.broadcast('record/change', rdoc, null, null, body); // trigger a full update
|
||||
await JudgeResultCallbackContext.postJudge(rdoc);
|
||||
if (rdoc) {
|
||||
app.broadcast('record/change', rdoc, null, null, body); // trigger a full update
|
||||
await JudgeResultCallbackContext.postJudge(rdoc);
|
||||
}
|
||||
}
|
||||
|
||||
end(body?: Partial<JudgeResultBody>) {
|
||||
|
||||
@@ -54,16 +54,13 @@ export class Consumer {
|
||||
});
|
||||
continue;
|
||||
}
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
const res = await getFirst(this.filter);
|
||||
const res = await getFirst(this.filter); // eslint-disable-line no-await-in-loop
|
||||
if (!res) {
|
||||
let timeout: NodeJS.Timeout = null;
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await new Promise((resolve) => {
|
||||
timeout = setTimeout(resolve, 1000 / (this.concurrency - this.processing.size));
|
||||
this.notify = resolve;
|
||||
});
|
||||
clearTimeout(timeout);
|
||||
await Promise.race([
|
||||
new Promise((resolve) => { this.notify = resolve; }),
|
||||
sleep(1000 / (this.concurrency - this.processing.size)),
|
||||
]);
|
||||
continue;
|
||||
}
|
||||
this.processing.add(res);
|
||||
|
||||
Reference in new issue
Block a user