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

[Doublons UUID ] erreur silencieuse si doublons sur uuid #459

Open
gildeluermoz opened this issue Jul 17, 2023 · 4 comments
Open

[Doublons UUID ] erreur silencieuse si doublons sur uuid #459

gildeluermoz opened this issue Jul 17, 2023 · 4 comments
Labels
bug Something isn't working solved in next release This issue will be fixed in next release

Comments

@gildeluermoz
Copy link

VERSION 2.0.6
Lors de l'import d'un fichier source comportant des uuid existants dans la synthèse (et d'autres non existants), le module fait la vérification des données, ne détecte pas d'erreur et propose le bouton pour importer toutes les lignes. En cliquant sur le bouton, l'import ne se fait pas. Sans message explicite concernant le problème rencontré.
En regardant les logs, il y a dans le fichier, des UUID existants déjà dans la synthèse.

[2023-07-17 09:54:08,126: ERROR/ForkPoolWorker-2] Task gn_module_import.tasks.do_import_in_synthese[f1cb717a-f755-444d-970f-76ec71afe41c] raised unexpected: IntegrityError("(psycopg2.errors.UniqueViolation) ERREUR:  la valeur d'une clé dupliquée rompt la contrainte unique « unique_id_sinp_unique »\nDETAIL:  La clé « (unique_id_sinp)=(da5ec3af-3ace-428d-a8fe-0da549b98575) » existe déjà.\n")
Traceback (most recent call last):
  File "/home/gamadmin/geonature/backend/venv/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1277, in _execute_context
    cursor, statement, parameters, context
  File "/home/gamadmin/geonature/backend/venv/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.UniqueViolation: ERREUR:  la valeur d'une clé dupliquée rompt la contrainte unique « unique_id_sinp_unique »
DETAIL:  La clé « (unique_id_sinp)=(da5ec3af-3ace-428d-a8fe-0da549b98575) » existe déjà.

on s'attend à ce que le module remonte les lignes en erreur comme il le fait pour les autres champs et propose d'importer les données importables (celles qui n'ont pas de doublons sur l'UUID).

@gildeluermoz
Copy link
Author

Le param ENABLE_SYNTHESE_UUID_CHECK est celui par défaut : = true

@DonovanMaillard
Copy link
Collaborator

Merci Gil,

Normalement ca doit lever une erreur sur les lignes en question et rendre uniquement les lignées doublonées "invalides".

@camillemonchicourt camillemonchicourt added the bug Something isn't working label Jul 31, 2023
@bouttier
Copy link
Contributor

bouttier commented Dec 9, 2023

Le contrôle de l’unicité des UUID ne se fait que sur les données dans le même JDD pour des raisons de performance. Mais cela amène en conséquence à un potentiel plantage s’il y a bien des doublons …
La requête contrôlant les UUID dupliqué a entre temps été amélioré, et peut-être que la restriction du contrôle au même JDD est jouable.
Pour faire sauter cette limitation sur le JDD, il faut commenter cette ligne :

Synthese.id_dataset == imprt.id_dataset,

@bouttier
Copy link
Contributor

bouttier commented Dec 9, 2023

Cette limitation avait été mise en place dans le cadre d’une grosse instance sur laquelle les contrôles été très long, et sur laquelle la contrainte d’unicité sur l’uuid synthèse avait été remplacé par une contrainte d’unicité (jdd,uuid), donc l’erreur à l’insertion dans la synthèse ne pouvait pas se produire.
Si on garde ce filtre JDD, il faut qu’il soit configurable, et qu’il ne soit pas présent par défaut, car il ne correspond pas à la contrainte d’unicité par défaut.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working solved in next release This issue will be fixed in next release
Projects
None yet
Development

No branches or pull requests

4 participants