Skip to content

Gestire HTTP_STATUS_CODE 409 - Conflict

Dante ha restituito, ad ew2openapi, un http_status_code=409 per l'inserimento di un pick-scnl a causa di un conflitto sul DataBase nell'inserimento di un SCNL.

Analizzando i log per la stazione incriminata MCIV.CHZ.EL.-- (che riporto sotto), penso che il problema sia dovuto al fatto che all'incirca allo stesso istante (2025-03-12 19:44:05.87) il pick-scnl sia stato inserito sia da hew1 che da hew2; l'inserimento di una SCNL avviene mediante SELECT or CREATE.
Quindi:

  • hew2 ha fatto la SELECT su scnl, non ha trovato risultato e l'ha inserito (INSERT)
  • hew1 ha fatto la SELECT su scnl, non ha trovato risultato e l'ha inserito (INSERT) ma ha ottentuto un duplicate key value

questo ha portato a "buttare" il pick.

Proposta: In caso di 409, ritenterei per un numero finito di volte a distanza di qualche secondo.

hew2:[2025-03-12 19:44:05.878158 - 2joAR] - API-v3.38.0.INFO: {"data":{"ewLogo":{"type":"TYPE_PICK_SCNL","module":"MOD_PICK_EW","installation":"INST_INGV","instance":"hew2","user":"ew","hostname":"af638c27a58b"},"ewMessage":{"pickId":11157682,"network":"EL","station":"MCIV","component":"CHZ","location":"--","firstMotion":"D","pickWeight":2,"timeOfPick":"2025-03-12T19:43:50.950Z","pAmplitude":[3997,3164,1802]}}} [] []
hew1:[2025-03-12 19:44:05.875564 - Ip6ul] - API-v3.38.0.INFO: {"data":{"ewLogo":{"type":"TYPE_PICK_SCNL","module":"MOD_PICK_EW","installation":"INST_INGV","instance":"hew1","user":"ew","hostname":"dae103749e69"},"ewMessage":{"pickId":10929569,"network":"EL","station":"MCIV","component":"CHZ","location":"--","firstMotion":"D","pickWeight":2,"timeOfPick":"2025-03-12T19:43:50.950Z","pAmplitude":[3997,3164,1802]}}} [] []

hew1:[2025-03-12 19:44:05.972074 - Ip6ul] - API-v3.38.0.ERROR: SQLSTATE[23505]: Unique violation: 7 ERROR:  duplicate key value violates unique constraint "idx_110003_sta" DETAIL:  Key (sta, cha, loc, net)=(MCIV, CHZ, --, EL) already exists. (SQL: insert into "scnl" ("net", "sta", "cha", "loc") values (EL, MCIV, CHZ, --) returning "id") {"exception":"[object] (Illuminate\\Database\\QueryException(code: 23505): SQLSTATE[23505]: Unique violation: 7 ERROR:  duplicate key value violates unique constraint \"idx_110003_sta\"\nDETAIL:  Key (sta, cha, loc, net)=(MCIV, CHZ, --, EL) already exists. (SQL: insert into \"scnl\" (\"net\", \"sta\", \"cha\", \"loc\") values (EL, MCIV, CHZ, --) returning \"id\") at /app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:712)\n[previous exception] [object] (PDOException(code: 23505): SQLSTATE[23505]: Unique violation: 7 ERROR:  duplicate key value violates unique constraint \"idx_110003_sta\"\nDETAIL:  Key (sta, cha, loc, net)=(MCIV, CHZ, --, EL) already exists. at /app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:373)"} []