Testing-Game-SAD-2023 / A13

Versione migliorativa sviluppata a partire dal progetto A10-2024 con integrazione del repository A7
6 stars 12 forks source link

Eccezione durante la creazione di cartelle in prototipo20-t8-generazione-1 #6

Open PorfirioTramontana opened 6 months ago

PorfirioTramontana commented 6 months ago

Una failure ricorre nell'ambito di protipo20-t8-generazione-1. La frequenza della failure è molto alta: in un campione di un'ora di esecuzione del container è stata osservata in 15 casi distinti.

Al momento è disponibile solo il log corrispondente del container, mentre non è disponibile una procedura di replicazione dell'eccezione.

2024-05-13 20:08:02 (prova_esecuzione_parametri4.js) Creation of the directory where the test will be saved /VolumeT8/FolderTreeEvo/HSLColor/StudentLogin/Player14/Game16/Round16/Turn1/TestReport 2024-05-13 20:08:03 node:internal/fs/utils:351 2024-05-13 20:08:03 throw err; 2024-05-13 20:08:03 ^ 2024-05-13 20:08:03 2024-05-13 20:08:03 Error: ENOENT: no such file or directory, open '/VolumeT8/FolderTreeEvo/HSLColor/StudentLogin/Player11/Game11/Round11/Turn9/TestReport/GameData.csv' 2024-05-13 20:08:03 at Object.openSync (node:fs:596:3) 2024-05-13 20:08:03 at Object.readFileSync (node:fs:464:35) 2024-05-13 20:08:03 at /app/Serv/prova_esecuzione_parametri4.js:180:55 2024-05-13 20:08:03 at ChildProcess.exithandler (node:child_process:414:7) 2024-05-13 20:08:03 at ChildProcess.emit (node:events:517:28) 2024-05-13 20:08:03 at maybeClose (node:internal/child_process:1098:16) 2024-05-13 20:08:03 at ChildProcess._handle.onexit (node:internal/child_process:303:5) { 2024-05-13 20:08:03 errno: -2, 2024-05-13 20:08:03 syscall: 'open', 2024-05-13 20:08:03 code: 'ENOENT', 2024-05-13 20:08:03 path: '/VolumeT8/FolderTreeEvo/HSLColor/StudentLogin/Player11/Game11/Round11/Turn9/TestReport/GameData.csv' 2024-05-13 20:08:03 }

Il problema sembra quindi risiedere in una chiamata in apertura di un file. Non si vedono però eccezioni o fallimenti nelle operazioni precedenti, per cui rimane aperta la possibilità che la causa del fallimento sia dovuta alla concorrenza tra diverse richieste di valutazione delle metriche eseguite da diversi utenti.

La conseguenza della failure è l'interruzione repentina del container, che può essere solo riavviato manualmente.

Una prima soluzione potrebbe essere nella gestione dell'eccezione in modo da impedire almeno la caduta del container e propagando eventualmente un messaggio di errore verso il chiamante.

reverse-unina commented 6 months ago

Le conseguenze di questa issue possono essere replicate dalla issue #11 . In ogni caso il problema sembra essere più generale.