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

Bug Rollback #8

Open
TheoLechemia opened this issue Apr 10, 2019 · 4 comments
Open

Bug Rollback #8

TheoLechemia opened this issue Apr 10, 2019 · 4 comments
Labels

Comments

@TheoLechemia
Copy link

Lorsqu'on envoie des données qui provoquent des erreur à l'écriture en base (character varying pour une colonne qui attend des entiers, id observateur non présent en base etc...), le rollback effectué ne semble pas fonctionner. L'erreur suivante est levée:

SynchronizeError: ERREUR:  la transaction est annulée, les commandes sont ignorées jusqu'à la fin du bloc
de la transaction

et le json n'est pas enregistré dans la table d'archivage des erreurs.

@gildeluermoz
Copy link
Member

La transaction est annulée...

C'est pas justement un rollback ça ?
Je n'ai pas pris le temps de regarder le code mais pour éviter que ça remonte en erreur, il faudrait capturer l'erreur avec un RAISE ou faire ça dans un try except en Python.

@TheoLechemia
Copy link
Author

J'ai essayé de le faire sans succès.
Et si le rollback fonctionnait, on pourrait écrire dans la table d'erreurs, ce qui n'est pas le cas.

@gildeluermoz
Copy link
Member

Je regarderai de plus près. Mais l'erreur levée n'est pas l'erreur d'écriture dont tu parles :

character varying pour une colonne qui attend des entiers, id observateur non présent en base etc...

IL y a bien un rollback :ERREUR: la transaction est annulée,... mais ce qui n'est pas normal c'est justement qu'il leve une erreur.

@TheoLechemia
Copy link
Author

Mais l'erreur levée n'est pas l'erreur d'écriture dont tu parles

Je n'ai pas mis la trace entière. La 1ère erreur qui est levée est du genre "impossible d'inserer un id_role non présent dans la table t_roles". Ensuite la web-api lève l'erreur que j'ai mise
SynchronizeError: ERREUR: la transaction est annulée ...
J'ai déjà eu ça dans GeoNature. Quand il y a une erreur SQL et que le rollback n'est pas (ou mal) effectué, toute les commandes exécutées ensuite ne passe pas. Ici l'écriture dans la table d'erreur n'est pas effectué. Et je suis presque totalement sût que c'est parce que le rollback ne marche pas.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants