Finto-data icon indicating copy to clipboard operation
Finto-data copied to clipboard

Kanton Konversioskriptin virheensietökyvyn parantaminen

Open Vainonen opened this issue 1 year ago • 3 comments

Konversioskripti saattaa kaatua aika pienistäkin virheistä Asterin tietueissa, jolloin päivitykset pysähtyvät siihen.

  • virheensietokykyä voisi kehittää esim. yksittäinen tietue tai kenttä voitaisiin ohittaa jos siinä on ongelma
  • tieto virheestä pitäisi saada eteenpäin
  • tietuekorjaukset pitäisi pyytää toimijakuvailulta

Vainonen avatar Nov 15 '24 13:11 Vainonen

Tänään tehty seuraavia:

  1. Poistettu kielikoodien haku Lexvosta Finton SPARQL-rajapinnan kautta, joka usein takkuilee. Sen sijaan kielikoodit on laitettu csv-tiedostoon josta ne luetaan konversioskriptille. Poistaa yhden keskeisen ongelmatekijän kuvioista kokonaan.
  2. Lisätty URIen validointitarkistuksia moneen paikkaan. Nämä eivät sinänsä aiheuttaneet kovin fataaleja ongelmia, mutta kuitenkin huonoa dataa ja ikäviä virheilmoituksia esim. Fusekin lokiin.
  3. Lisätty GitHubiin näkyville convert-warnings.log josta näkee minkälaisia virheitä on tullut konversiossa. Tarkoitus on, että tämän perusteella voidaan tehdä korjauksia Asterin tietueissin. Toimijakuvailun väki pääsee suoraan lukemaan tätä virhelistaa.

osma avatar Apr 02 '25 13:04 osma

Edelleen tekemättä:

virheensietokykyä voisi kehittää esim. yksittäinen tietue tai kenttä voitaisiin ohittaa jos siinä on ongelma

Tämä kannattaisi tehdä niin, että yksittäisen tietueen prosessointikoodi laitetaan kokonaisuudessaan try/except-blokkiin niin, että mikä tahansa odottamaton virhe konversiosäännöissä ei kaada koko prosessia. Sen sijaan voitaisiin tulostaa WARNING ja skipata koko tietue.

osma avatar Apr 17 '25 08:04 osma

Nyt melko usein konversio hajoaa siihen, että Finton APIin tehtävä haku epäonnistuu.

Tässä esimerkki tältä päivältä (17.9.2025 aamuyön tunteina):

Traceback (most recent call last):
  File "/srv/Finto-data/vocabularies/finaf/convert-to-rdf.py", line 700, in <module>
    main()
  File "/srv/Finto-data/vocabularies/finaf/convert-to-rdf.py", line 466, in main
    place = get_place_uri(f['e'], f.get('0'), uri)
  File "/srv/Finto-data/vocabularies/finaf/convert-to-rdf.py", line 263, in get_place_uri
    return lookup_yso_place(place_name)
  File "/srv/Finto-data/vocabularies/finaf/convert-to-rdf.py", line 246, in lookup_yso_place
    req = requests.get(FINTO_API_BASE + 'yso-paikat/lookup', params=payload)
  File "/usr/local/virtualenvs/update-finaf/lib64/python3.9/site-packages/requests/api.py", line 73, in get
    return request("get", url, params=params, **kwargs)
  File "/usr/local/virtualenvs/update-finaf/lib64/python3.9/site-packages/requests/api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/virtualenvs/update-finaf/lib64/python3.9/site-packages/requests/sessions.py", line 587, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/virtualenvs/update-finaf/lib64/python3.9/site-packages/requests/sessions.py", line 701, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/virtualenvs/update-finaf/lib64/python3.9/site-packages/requests/adapters.py", line 547, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

Konversiokoodia voisi muuttaa niin, että se yrittää uudestaan jos tulee tällainen poikkeus. Tai ainakaan se ei saisi kaatua.

osma avatar Sep 17 '25 10:09 osma