judge: auto-remove extra files (#104)

This commit is contained in:
undefined committed 2021-04-20 21:56:31 +08:00
1 parent c977a51de9
commit a7fd32cac9
6 files changed
+26 -2

No files matched your search

+5
View File
@@ -202,10 +202,15 @@ export default class Hydro {
} catch (e) { /* ignore */ }
const version = {};
const filenames = [];
const allFiles = new Set<string>();
for (const file of files) {
allFiles.add(file.name);
version[file.name] = file.etag;
if (etags[file.name] !== file.etag) filenames.push(file.name);
}
for (const name in etags) {
if (!allFiles.has(name)) await fs.rm(path.join(filePath, name));
}
if (filenames.length) {
log.info(`Getting problem data: ${this.config.host}/${domainId}/${pid}`);
if (next) next({ judge_text: '正在同步测试数据,请稍后' });
+6
View File
@@ -24,6 +24,7 @@ declare module 'hydrooj/dist/interface' {
'hydrojudge.tmpfs_size': string,
'hydrojudge.retry_delay_sec': number,
'hydrojudge.sandbox_host': string,
'hydrojudge.memoryMax': string,
'hydrojudge.testcases_max': number,
'hydrojudge.total_time_limit': number,
'hydrojudge.parallelism': number,
@@ -81,12 +82,17 @@ async function postInit() {
etags = JSON.parse(fs.readFileSync(path.join(filePath, 'etags')).toString());
} catch (e) { /* ignore */ }
const version = {};
const filenames = new Set<string>();
for (const file of files) {
filenames.add(file.name);
version[file.name] = file.etag;
if (etags[file.name] !== file.etag) {
await storage.get(`problem/${domainId}/${pid}/testdata/${file.name}`, path.join(filePath, file.name));
}
}
for (const name in etags) {
if (!filenames.has(name)) await fs.rm(path.join(filePath, name));
}
fs.writeFileSync(path.join(filePath, 'etags'), JSON.stringify(version));
fs.writeFileSync(path.join(filePath, 'lastUsage'), new Date().getTime().toString());
await processData(filePath).catch(noop);