mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
judge: support stdioLimit
This commit is contained in:
1 parent
c7a331b551
commit
4958655ac9
2 files changed
+4
-2
No files matched your search
@@ -40,6 +40,8 @@ interface Parameter {
|
|||||||
env?: Record<string, string>;
|
env?: Record<string, string>;
|
||||||
/** redirect stdin & stdout */
|
/** redirect stdin & stdout */
|
||||||
filename?: string;
|
filename?: string;
|
||||||
|
/** In megabytes */
|
||||||
|
stdioLimit?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface SandboxAdaptedResult {
|
interface SandboxAdaptedResult {
|
||||||
@@ -72,7 +74,7 @@ function proc(params: Parameter): Cmd {
|
|||||||
const copyOut = supportOptional
|
const copyOut = supportOptional
|
||||||
? params.copyOut
|
? params.copyOut
|
||||||
: (params.copyOut || []).map((i) => (i.endsWith('?') ? i.substring(0, i.length - 1) : i));
|
: (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 rate = getConfig('rate');
|
||||||
const copyOutCached = [...(params.copyOutCached || [])];
|
const copyOutCached = [...(params.copyOutCached || [])];
|
||||||
if (params.cacheStdoutAndStderr) copyOutCached.push(params.filename ? `${params.filename}.out?` : 'stdout', 'stderr');
|
if (params.cacheStdoutAndStderr) copyOutCached.push(params.filename ? `${params.filename}.out?` : 'stdout', 'stderr');
|
||||||
|
|||||||
@@ -232,7 +232,7 @@ export default class RecordModel {
|
|||||||
|
|
||||||
export function apply(ctx: Context) {
|
export function apply(ctx: Context) {
|
||||||
// Mark problem as deleted
|
// 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('domain/delete', (domainId) => RecordModel.coll.deleteMany({ domainId }));
|
||||||
ctx.on('ready', () => db.ensureIndexes(
|
ctx.on('ready', () => db.ensureIndexes(
|
||||||
RecordModel.coll,
|
RecordModel.coll,
|
||||||
|
|||||||
Reference in new issue
Block a user