Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[1.5.2] Les Exports CSV non géographiques ne fonctionnent pas #197

Closed
maximetoma opened this issue Aug 25, 2023 · 16 comments
Closed

[1.5.2] Les Exports CSV non géographiques ne fonctionnent pas #197

maximetoma opened this issue Aug 25, 2023 · 16 comments
Labels
bug Something isn't working

Comments

@maximetoma
Copy link

maximetoma commented Aug 25, 2023

Version
GeoNature 2.12.3
Exports 1.5.2

Description du bug
Mes exports en CSV me retournent une erreur lors de la réception du mail :
"Votre export XXX n'a pas fonctionné correctement."
Le fichier est quand même généré mais pèse 0K
Les autres formats d'export sauf json fonctionnent cependant...

J'ai testé également via la commande geonature exports generate --format "csv" --user-id "17" 273 et le fichier est bien généré normalement en CSV...

Savez-vous d'où cela peut venir ?

Logs
Les logs du worker me donnent :

[2023-08-25 15:24:10,572: INFO/MainProcess] Task gn_module_export.tasks.generate_export[5db0b103-2971-4134-861f-3071218d1d6e] received
[2023-08-25 15:24:10,573: INFO/ForkPoolWorker-8] gn_module_export.tasks.generate_export[5db0b103-2971-4134-861f-3071218d1d6e]: Generate export 273...
[2023-08-25 15:24:10,732: INFO/ForkPoolWorker-8] Send email notification to maxime.toma ([email protected])
[2023-08-25 15:24:10,733: INFO/MainProcess] Task geonature.core.notifications.tasks.send_notification_mail[674de834-5098-4eaf-a8b9-1e3dd79879be] received
[2023-08-25 15:24:10,734: INFO/ForkPoolWorker-9] Launch mail.
[2023-08-25 15:24:10,735: INFO/ForkPoolWorker-8] Send database notification to maxime.toma
[2023-08-25 15:24:10,737: ERROR/ForkPoolWorker-8] Task gn_module_export.tasks.generate_export[5db0b103-2971-4134-861f-3071218d1d6e] raised unexpected: ValueError("Invalid fields for <Schema(many=False)>: {'geom_2154', 'geom_4326', 'geom'}.")
Traceback (most recent call last):
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.9/site-packages/celery/app/trace.py", line 451, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/geonature/celery_app.py", line 12, in __call__
    return self.run(*args, **kwargs)
  File "/home/geonatureadmin/gn_module_export/backend/gn_module_export/tasks.py", line 62, in generate_export
    export_data_file(export_id, file_name, export_url, format, id_role, filters)
  File "/home/geonatureadmin/gn_module_export/backend/gn_module_export/utils_export.py", line 153, in export_data_file
    raise exp
  File "/home/geonatureadmin/gn_module_export/backend/gn_module_export/utils_export.py", line 140, in export_data_file
    export_as_file(
  File "/home/geonatureadmin/gn_module_export/backend/gn_module_export/utils/export.py", line 29, in export_as_file
    _export_as_file(
  File "/home/geonatureadmin/gn_module_export/backend/gn_module_export/utils/export.py", line 75, in _export_as_file
    func_dict[file_format](
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.9/site-packages/utils_flask_sqla_geo/export.py", line 43, in export_csv
    schema = schema_class(only=only or None)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.9/site-packages/utils_flask_sqla/schema.py", line 51, in __init__
    super().__init__(*args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.9/site-packages/utils_flask_sqla_geo/schema.py", line 175, in __init__
    super().__init__(*args, only=only, exclude=exclude, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.9/site-packages/marshmallow_sqlalchemy/load_instance_mixin.py", line 45, in __init__
    super().__init__(*args, **kwargs)
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.9/site-packages/marshmallow/schema.py", line 404, in __init__
    self._init_fields()
  File "/home/geonatureadmin/geonature/backend/venv/lib/python3.9/site-packages/marshmallow/schema.py", line 979, in _init_fields
    raise ValueError(message)
ValueError: Invalid fields for <Schema(many=False)>: {'geom_2154', 'geom_4326', 'geom'}.
[2023-08-25 15:24:11,523: INFO/ForkPoolWorker-9] Task geonature.core.notifications.tasks.send_notification_mail[674de834-5098-4eaf-a8b9-1e3dd79879be] succeeded in 0.7894784398376942s: None
@maximetoma
Copy link
Author

update

@maximetoma maximetoma changed the title [1.] [1.5.2] Les Exports CSV ne fonctionnent pas Aug 25, 2023
@camillemonchicourt
Copy link
Member

Dans l'erreur, je vois ValueError: Invalid fields for <Schema(many=False)>: {'geom_2154', 'geom_4326', 'geom'}..

Dans la configuration de ton export, tu n'aurais pas renseigné plusieurs champs dans "Nom de champ géométrique" ?

@maximetoma
Copy link
Author

Alors j'ai redémarré le service worker maintenant je n'ai plus qu'une colonne en erreur ValueError: Invalid fields for <Schema(many=False)>: {'geom_4326'}. mais le problème c'est que cette colonne n'existe pas de la vue que je veux télécharger et par ailleurs il n'ya aucune géométrie :)

Ci-dessous la ligne de l'export dans t_exports et sur le module Admin

id label schema_name view_name desc geometry_field geometry_srid public id_licence view_pk_column
273 Tableau de correspondance des Habitats des RN SEP (by Camille DESJARDIN) ref_habitats v_sep_corresp_hab Tableau de correspondance des Habitats des RN SEP (by Camille DESJARDIN)     FAUX 3 id

image

@camillemonchicourt
Copy link
Member

OK, je viens de reproduire sur notre production.
Cela semble une régression de la refonte du module en 1.5, où on a du zapper un truc sur les exports non géographiques.

J'ai le même soucis sur un export non géographique avec cette erreurs dans les logs du worker :

[2023-08-25 16:58:33,892: ERROR/ForkPoolWorker-7] Task gn_module_export.tasks.generate_export[2fa0547c-23b1-4b26-bd20-6668e1ea7e73] raised unexpected: ValueError("Invalid fields for <Schema(many=False)>: {'geom'}.")
Traceback (most recent call last):
  File "/home/geonatadmin/geonature/backend/venv/lib/python3.9/site-packages/celery/app/trace.py", line 451, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/home/geonatadmin/geonature/backend/venv/lib/python3.9/site-packages/sentry_sdk/integrations/celery.py", line 275, in _inner
    reraise(*exc_info)
  File "/home/geonatadmin/geonature/backend/venv/lib/python3.9/site-packages/sentry_sdk/_compat.py", line 60, in reraise
    raise value
  File "/home/geonatadmin/geonature/backend/venv/lib/python3.9/site-packages/sentry_sdk/integrations/celery.py", line 270, in _inner
    return f(*args, **kwargs)
  File "/home/geonatadmin/geonature/backend/geonature/celery_app.py", line 12, in __call__
    return self.run(*args, **kwargs)
  File "/home/geonatadmin/gn_module_export/backend/gn_module_export/tasks.py", line 62, in generate_export
    export_data_file(export_id, file_name, export_url, format, id_role, filters)
  File "/home/geonatadmin/gn_module_export/backend/gn_module_export/utils_export.py", line 153, in export_data_file
    raise exp
  File "/home/geonatadmin/gn_module_export/backend/gn_module_export/utils_export.py", line 140, in export_data_file
    export_as_file(
  File "/home/geonatadmin/gn_module_export/backend/gn_module_export/utils/export.py", line 29, in export_as_file
    _export_as_file(
  File "/home/geonatadmin/gn_module_export/backend/gn_module_export/utils/export.py", line 75, in _export_as_file
    func_dict[file_format](
  File "/home/geonatadmin/geonature/backend/venv/lib/python3.9/site-packages/utils_flask_sqla_geo/export.py", line 43, in export_csv
    schema = schema_class(only=only or None)
  File "/home/geonatadmin/geonature/backend/venv/lib/python3.9/site-packages/utils_flask_sqla/schema.py", line 51, in __init__
    super().__init__(*args, **kwargs)
  File "/home/geonatadmin/geonature/backend/venv/lib/python3.9/site-packages/utils_flask_sqla_geo/schema.py", line 175, in __init__
    super().__init__(*args, only=only, exclude=exclude, **kwargs)
  File "/home/geonatadmin/geonature/backend/venv/lib/python3.9/site-packages/marshmallow_sqlalchemy/load_instance_mixin.py", line 45, in __init__
    super().__init__(*args, **kwargs)
  File "/home/geonatadmin/geonature/backend/venv/lib/python3.9/site-packages/marshmallow/schema.py", line 404, in __init__
    self._init_fields()
  File "/home/geonatadmin/geonature/backend/venv/lib/python3.9/site-packages/marshmallow/schema.py", line 979, in _init_fields
    raise ValueError(message)
ValueError: Invalid fields for <Schema(many=False)>: {'geom'}.

A investiguer et corriger dans une prochaine version.

@camillemonchicourt camillemonchicourt changed the title [1.5.2] Les Exports CSV ne fonctionnent pas [1.5.2] Les Exports CSV non géographiques ne fonctionnent pas Aug 25, 2023
@camillemonchicourt camillemonchicourt added the bug Something isn't working label Aug 25, 2023
@amandine-sahl
Copy link
Contributor

J'ai essayé de reproduire l'erreur mais sans succès ni en developpement ni en version de production

Versions des outils en production

Utils-Flask-SQLAlchemy 0.3.5
Utils-Flask-SQLAlchemy-Geo 0.2.8
gn_module_export 1.5.2
GeoNature 2.12.3

@maximetoma
Copy link
Author

maximetoma commented Sep 4, 2023

@amandine-sahl c'est vraiment curieux... j'ai les mêmes versions que toi

@DonovanMaillard
Copy link
Contributor

C'est pas une question de timeout comme on a vu sur une autre instance pour les API ? Quelles tailles font vos vues ?

@maximetoma
Copy link
Author

Dans mon cas c'est assez variable... Mais par exemple j'ai une vue de 309 données sur 13 colonnes

@amandine-sahl
Copy link
Contributor

C'est pas une question de timeout comme on a vu sur une autre instance pour les API ? Quelles tailles font vos vues ?

Justement depuis la version 1.5 il ne doit plus y avoir de problème de timeout, les export sont générés de façon asynchrone.

A mon avis c'est un soucis de version des librairies utils, mais je n'arrive pas à reproduire l'erreur. De plus je ne vois pas pouquoi un même export fonctionne avec la commande generate. Est-ce que le worker geonature à été redémaré après la mise à jour des librairies?

@camillemonchicourt
Copy link
Member

Dans notre cas, pas de timeout non plus, c'est un export tout petit.
Voir le message d'erreur ci-dessus.

@camillemonchicourt
Copy link
Member

ValueError: Invalid fields for <Schema(many=False)>: {'geom'}.

@camillemonchicourt
Copy link
Member

Bon, de mon côté sur le serveur de DEMO avec GeoNature 2.13.0 et Export 1.6.0, j'ai créé un export non géographique (SELECT * FROM gn_meta.t_datasets).
J'avais la même erreur en tentant de l'exporter depuis l'interface.
Puis après avoir redémarré le service geonature et geonature-worker, il fonctionne...

Je vais voir pourquoi on a le soucis sur notre GeoNature de production, si il faut aussi simplement redémarrer les services, ou si c'est un soucis de version.

@maximetoma
Copy link
Author

@camillemonchicourt de mon côté, j'ai beau redémarrer les services, ça ne fonctionne malheureusement pas :)
Peut-être un pb de comptabilité sur le version 1.5.2 ?

@camillemonchicourt
Copy link
Member

@maximetoma, ton soucis est potentiellement celui indiqué ici - #199

@maximetoma
Copy link
Author

@camillemonchicourt @amandine-sahl okay c'était bien ça, ça fonctionne !
merci :D

@camillemonchicourt
Copy link
Member

Ahhhh OK !
Bon donc c'était bien une dépendance python qui ne se mettait pas à jour si on met à jour le module Export mais pas GeoNature, comme indiquait Fred.
Solutionné en mettant à jour cette dépendance, ou en mettant à jour GeoNature.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants