From 4958655ac9b1ba512d4d4fd04171181adaf3cb62 Mon Sep 17 00:00:00 2001 From: undefined Date: Fri, 16 Dec 2022 05:19:59 +0800 Subject: [PATCH] judge: support stdioLimit --- packages/hydrojudge/src/sandbox.ts | 4 +++- packages/hydrooj/src/model/record.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/hydrojudge/src/sandbox.ts b/packages/hydrojudge/src/sandbox.ts index dae24667f..b0998da1f 100644 --- a/packages/hydrojudge/src/sandbox.ts +++ b/packages/hydrojudge/src/sandbox.ts @@ -40,6 +40,8 @@ interface Parameter { env?: Record; /** redirect stdin & stdout */ filename?: string; + /** In megabytes */ + stdioLimit?: number; } interface SandboxAdaptedResult { @@ -72,7 +74,7 @@ function proc(params: Parameter): Cmd { const copyOut = supportOptional ? params.copyOut : (params.copyOut || []).map((i) => (i.endsWith('?') ? i.substring(0, i.length - 1) : i)); - const size = parseMemoryMB(getConfig('stdio_size')); + const size = params.stdioLimit || params.cacheStdoutAndStderr ? parseMemoryMB(getConfig('stdio_size')) : 4; const rate = getConfig('rate'); const copyOutCached = [...(params.copyOutCached || [])]; if (params.cacheStdoutAndStderr) copyOutCached.push(params.filename ? `${params.filename}.out?` : 'stdout', 'stderr'); diff --git a/packages/hydrooj/src/model/record.ts b/packages/hydrooj/src/model/record.ts index d9e4a582d..85ba8bc7c 100644 --- a/packages/hydrooj/src/model/record.ts +++ b/packages/hydrooj/src/model/record.ts @@ -232,7 +232,7 @@ export default class RecordModel { export function apply(ctx: Context) { // Mark problem as deleted - ctx.on('problem/delete', (domainId, docId) => RecordModel.coll.updateMany({ domainId, pid: docId }, { $set: { pid: -1 } })); + ctx.on('problem/delete', (domainId, docId) => RecordModel.coll.deleteMany({ domainId, pid: docId })); ctx.on('domain/delete', (domainId) => RecordModel.coll.deleteMany({ domainId })); ctx.on('ready', () => db.ensureIndexes( RecordModel.coll,