Skip to content

fix(so): catalogo SDMX con detail=allstubs e timeout radar dedicato - #414

Merged
Gabrymi93 merged 1 commit into
mainfrom
fix/istat-sdmx-allstubs-timeout
Aug 2, 2026
Merged

fix(so): catalogo SDMX con detail=allstubs e timeout radar dedicato#414
Gabrymi93 merged 1 commit into
mainfrom
fix/istat-sdmx-allstubs-timeout

Conversation

@Gabrymi93

@Gabrymi93 Gabrymi93 commented Aug 2, 2026

Copy link
Copy Markdown
Member

Sintesi

Il catalogo SDMX completo di ISTAT (dataflow/IT1) serializza ~4.900 dataflow in una risposta unica (~60-80s anche in modalità ridotta). Questo causava due problemi:

  • radar: TIMEOUT_SECONDS = 10 → ReadTimeout garantito → istat_sdmx sempre YELLOW
  • inventory: il collector scaricava il catalogo full (payload pesante, vicino al limite dei 330s del client)

Fix: fetch del catalogo con detail=allstubs (payload ridotto a id+nome, che è tutto ciò che l'inventory usa) + timeout radar dedicato per SDMX.

Contesto collegato

Nessuna issue collegata — fix nato da esplorazione tecnica (guida ondata/guida-api-istat): la risposta allstubs è verificata compatibile (id, agencyID, Name presenti).

Cosa cambia

  • Nuova fonte o modifica registro (sources_registry.yaml)
  • Source-check o inventory-triage
  • Modifica script (radar, inventory, source-check, MCP)
  • Modifica funnel o criteri di osservazione
  • Workflow CI (radar.yml, observatory.yml)
  • Skills o MCP tools
  • Documentazione
  • Altro

Checklist

Se modifichi script o MCP

  • pytest tests/ passa (29 sui file toccati; 66+2 sui moduli consumatori)
  • ruff check . passa
  • mypy scripts/ so_mcp/ passa (verificato su file toccati)
  • Comando manuale verificato (run reale radar + inventory, vedi sotto)

Verifica

Run reali contro il servizio ISTAT, non fake:

  1. Probe radar: probe_url('https://esploradati.istat.it/SDMXWS/rest/dataflow/IT1')GREEN / HTTP 200 in 58s (prima: YELLOW ReadTimeout)
  2. Radar completo (scripts.radar_check): istat_sdmxGREEN, http_code 200, note null (era YELLOW ReadTimeout)
  3. Inventory (build_catalog_inventory --workers 16 --skip-red-sources): istat_sdmxstatus ok, rows 4899, method dataflow_count; api_base_url pulita (0 URL contaminati da allstubs), distribution_url corretta

Test aggiunti: 4 test catalog_fetch_url (URL vuota / senza query / con query / detail già presente), 1 test ramo SDMX in probe_url (verifica timeout 180s e URL con allstubs).

Note per chi revisiona

  • Nessun cambio di contratto: base_url del registry intatta, stessi item, stesso schema output. Unica fonte SDMX nel registry è istat_sdmx, quindi impatto circoscritto.
  • catalog_fetch_url() non forza il parametro se detail= è già presente nell'URL (comportamento conservativo).
  • I report radar e gli artifact inventory non sono in questa PR (i parquet sono in .gitignore): verranno rigenerati dalla CI post-merge, come da pratica esistente.
  • Nota emersa dalla guida ondata (non inclusa in questo fix): il parametro format=csv nella distribution_url SDMX non è supportato da ISTAT (serve header Accept); eventuale fix separato.

Il catalogo SDMX completo (es. dataflow/IT1) serializza migliaia di dataflow
in una risposta unica (~60-80s anche in modalita' ridotta). Con il timeout
radar di 10s ISTAT era sempre YELLOW (ReadTimeout) e l'inventory scaricava
il payload full, vicino al limite dei 330s.

- collectors/sdmx.py: catalog_fetch_url() aggiunge ?detail=allstubs alla
  fetch del catalogo (payload ridotto a id+nome, sufficiente per l'inventory)
- radar_check.py: SDMX_TIMEOUT_SECONDS=180 + ramo SDMX in probe_url()
  (allstubs + timeout dedicato); non-SDMX invariato
- test: 4 test catalog_fetch_url, 1 test ramo SDMX radar, chiavi fake allineate
@Gabrymi93
Gabrymi93 force-pushed the fix/istat-sdmx-allstubs-timeout branch from f4f1472 to 875d256 Compare August 2, 2026 17:32
@Gabrymi93
Gabrymi93 merged commit b10e1e0 into main Aug 2, 2026
2 checks passed
@Gabrymi93
Gabrymi93 deleted the fix/istat-sdmx-allstubs-timeout branch August 2, 2026 17:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant