From 88c15193d6cd1d3a91098e73e47b03720d40025e Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 10 Nov 2020 23:57:30 +0800 Subject: [PATCH] =?UTF-8?q?judge:=20=E4=BD=BF=E7=94=A8filename=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=97=B6=E9=99=90=E5=88=B6=E5=B9=B6=E8=A1=8C=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=95=B0=E9=87=8F=E4=B8=BA1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/hydrojudge/src/judge/default.ts | 3 ++- packages/hydrojudge/src/sandbox.ts | 4 +--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/hydrojudge/src/judge/default.ts b/packages/hydrojudge/src/judge/default.ts index be4d54bb0..ce33e0e6f 100644 --- a/packages/hydrojudge/src/judge/default.ts +++ b/packages/hydrojudge/src/judge/default.ts @@ -143,7 +143,8 @@ export const judge = async (ctx) => { ctx.total_score = 0; ctx.total_memory_usage_kb = 0; ctx.total_time_usage_ms = 0; - ctx.queue = new Queue({ concurrency: ctx.config.concurrency || 2 }); + // sandbox seems cannot handle concurrent tasks with output file correctly + ctx.queue = new Queue({ concurrency: ctx.config.concurrency || (ctx.config.filename ? 1 : 2) }); for (const sid in ctx.config.subtasks) tasks.push(judgeSubtask(ctx.config.subtasks[sid])(ctx)); await Promise.all(tasks); ctx.stat.done = new Date(); diff --git a/packages/hydrojudge/src/sandbox.ts b/packages/hydrojudge/src/sandbox.ts index e1a6b0c8e..964a8ea87 100644 --- a/packages/hydrojudge/src/sandbox.ts +++ b/packages/hydrojudge/src/sandbox.ts @@ -104,9 +104,7 @@ export async function run(execute, params?) { else ret.stdout = result.files.stdout || ''; if (params.stderr) await fs.writeFile(params.stderr, result.files.stderr || ''); else ret.stderr = result.files.stderr || ''; - if (result.error) { - ret.error = result.error; - } + if (result.error) ret.error = result.error; ret.files = result.files; ret.fileIds = result.fileIds || {}; return ret;