ASN220 si blocca nella ricerca per Serial Number¶
| Campo | Valore |
|---|---|
| ID ClickUp | 869av3ecp |
| Data segnalazione | 2025-10-15 |
| Data risoluzione | 2026-07-06 |
| Programmi coinvolti | ASN220 |
| Impatto | Alto |
Sintomo¶
ASN220 si blocca (loop) durante la ricerca dei contratti per serial number in due casi:
- In ambiente Cortesi, inserendo il serial number 8548: la ricerca matricole trova molte matricole con serial 8548/1, 8548/2, 8548/3 ecc. Il sospetto iniziale era che il blocco avvenisse quando il serial number e' seguito da un carattere diverso dalla "Z" forzata dal programma.
- In ambiente Refrigo, la ricerca matricola si blocca quando il serial number contiene una barra "/".
Causa¶
Il problema non dipendeva dal carattere "/" ne' dalla "Z" forzata, ma da un cursore condiviso sull'archivio matricole. Con le modifiche del 09.02.2026 la ricerca per matricola/serial era stata portata sulla chiave primaria di ASNMATRI. La scansione esterna delle matricole e la logica interna (risalita al contratto e ricerca del tecnico) operavano pero' sullo stesso file logico ASNMATRI: ogni volta che veniva trovato un serial valido, le letture interne riposizionavano il cursore e, al rientro nel loop, la lettura sequenziale ripartiva sempre dall'inizio dell'archivio. Con serial molto ripetuti (es. 8548 con molte matricole 8548/n) questo generava un loop infinito.
Correzione¶
Introdotto un file clone BSNMATRI — secondo file logico sullo stesso fisico di ASNMATRI, con record a prefisso bmtr- e paragrafi di I/O clonati — usato esclusivamente per la scansione esterna delle matricole. Il clone ha un cursore indipendente da quello di ASNMATRI usato dalle letture interne, quindi l'avanzamento della scansione non viene piu' azzerato dalle operazioni intermedie e la ricerca termina correttamente. Un flag di working (w-fl-uso-bsnmatri) segnala l'uso del clone cosi' da ripristinare il record della matricola in scansione dopo la ricerca del tecnico. Modifica marcata 030726 (TASK-2361), rilasciata sull'ambiente ufficiale Cortesi.