Closed edigiacomo closed 3 years ago
Quello che ho osservato io su arkioss
:
# Si pianta dopo aver scritto 9417706b
arki-query --postproc="json" 'reftime:>=2019-01-01,<=2020-01-01; area:VM2,3095; product:VM2,161' /arkivio/arkimet/dataset/simnbo > file.json
# Funziona correttamente ed esce dopo aver scritto 9874508b
ARKI_IO_TIMEOUT=2000 arki-query --postproc="json" 'reftime:>=2019-01-01,<=2020-01-01; area:VM2,3095; product:VM2,161' /arkivio/arkimet/dataset/simnbo > file.json
Per il caso http, rimando a #252, ed è probabile che sia semplicemente che non abbiamo un timeout settato in arki-server
Grazie al tuo comando di rsync, l'ho riprodotto su otto.metarpa, dove posso fare prove con build locali di arkimet instrumentati per il debugging
Sto facendo fatica a capire esattamente la root cause del problema, ma ho visto dove si inceppa. È il percorso di interazione complesso "manda dati al postprocessor, leggili dal postprocessor, mandali alla destinazione", che al momento è gestito da due parti diverse di arkimet, una manda dati al postprocessor, e una li legge dal postprocessor e li gira alla destinazione.
Sto ragionando di ristrutturare riunendo il tutto in un event loop unico. O scritto in casa, o usando la libevent.
Ho fatto merge del codice di streaming con timeout e del codice di streaming senza il timeout. Ora viene usato solo il codice di streaming con timeout, ma settando il timeout della poll()
a -1
che significa "aspetta per sempre".
Ho visto che con questa modifica, il piantamento di questo issue non si ripropone piú.
Lascio aperto i l ticket perché ci sono altre ristrutturazioni che vorrei fare per rendere piú gestibile questo codice
Ho fatto una prova su otto.metarpa
e in effetti il problema non si presenta più. Posso considerare il master stabile e pacchettizzare?
Purtroppo, su centos7 ci sono dei problemi in fase di pacchettizzazione (https://simc.arpae.it/moncic-ci/arkimet/last/master/centos7/build.log), dovuti al fatto che non può generare le man page con help2man
. Dai log non si vede, ma compilando arkimet sotto Centos7 ho:
[edigiacomo@sette arkimet] (master)$ ./run-local src/arki-dump --help
Traceback (most recent call last):
File "/autofs/nfshomes/edigiacomo/src/arkimet/src/arki-dump", line 2, in <module>
from arkimet.cmdline.dump import Dump
File "/autofs/nfshomes/edigiacomo/src/arkimet/python/arkimet/__init__.py", line 4, in <module>
from _arkimet import (
ImportError: /autofs/nfshomes/edigiacomo/src/arkimet/arki/.libs/libarkimet.so.1: undefined symbol: _ZN4arki6stream24ConcreteStreamOutputBaseINS0_20ConcreteLinuxBackendEEC2ESt10shared_ptrINS_5utils3sys19NamedFileDescriptorEEi
Ho finito il giro di refactoring del codice: vediamo se ha risolto anche il problema di centos7
Ci sono ancora delle cose da mettere a punto su Centos7, ci sto lavorando
La build che ho fatto su sette
passa i test!
@spanezz posso chiudere la issue oppure volevi tenerla aperta per refactoring?
Possiamo chiudere, direi che sia fatto tutto incluso il lavoro di refactoring
Questo problema si presenta solo sul server operativo
arkioss
, che contiene i dati osservati.Se faccio una query --data, tutto ok
Se uso il postprocessatore json, mi restituisce un po' di output (quasi tutto, visto che nella suddetta query arriva fino a dati del dicembre 2019) e poi si pianta. ARKI_IO_TIMEOUT non sortisce, peraltro, effetto (vedi #252).
Facendo la query localmente al server, non si pianta.
Se copio localmente i dati del dataset (e.g. tutto il 2019), il problema scompare (con arki-server locale)
Le versioni dei pacchetti su server di produzione e macchina di test sono sostanzialmente le stesse:
Differiscono solo per
meteo-vm2
(ma è una questione di file di configurazione, non di libreria). La sostanziale differenza è che arkioss è Centos8 e oliva è Fedora32.Se invece la query è su un periodo più breve (fino a 11 mesi), non si pianta: