Projet

Général

Profil

Development #31204

Les logs dans des blocs atomiques qui échouent ne sont pas conservés (rollback)

Ajouté par Benjamin Dauvergne il y a environ 5 ans. Mis à jour il y a 6 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
07 mars 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Parce qu'on utilise la même connection pour les logs et pour la transaction, si
la transaction foire les logs aussi.


Fichiers

0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch (1008 octets) 0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch Benjamin Dauvergne, 20 mars 2019 22:20
0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch (2,75 ko) 0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch Benjamin Dauvergne, 20 mars 2019 22:20
0001-utils-add-defer-module-to-run-things-later-31204.patch (6,4 ko) 0001-utils-add-defer-module-to-run-things-later-31204.patch Benjamin Dauvergne, 20 mars 2019 22:20
0002-utils-prevent-import-loop-31204.patch (2,2 ko) 0002-utils-prevent-import-loop-31204.patch Benjamin Dauvergne, 20 mars 2019 22:20
0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch (1015 octets) 0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch Benjamin Dauvergne, 22 mars 2019 23:05
0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch (2,79 ko) 0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch Benjamin Dauvergne, 22 mars 2019 23:05
0001-utils-add-defer-module-to-run-things-later-31204.patch (6,63 ko) 0001-utils-add-defer-module-to-run-things-later-31204.patch Benjamin Dauvergne, 22 mars 2019 23:05
0002-utils-prevent-import-loop-31204.patch (2,2 ko) 0002-utils-prevent-import-loop-31204.patch Benjamin Dauvergne, 22 mars 2019 23:05
0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch (1017 octets) 0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch Benjamin Dauvergne, 19 avril 2019 10:20
0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch (2,79 ko) 0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch Benjamin Dauvergne, 19 avril 2019 10:20
0001-utils-add-defer-module-to-run-things-later-31204.patch (6,64 ko) 0001-utils-add-defer-module-to-run-things-later-31204.patch Benjamin Dauvergne, 19 avril 2019 10:20
0002-utils-prevent-import-loop-31204.patch (2,2 ko) 0002-utils-prevent-import-loop-31204.patch Benjamin Dauvergne, 19 avril 2019 10:20
0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch (1,02 ko) 0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch Benjamin Dauvergne, 14 mai 2019 10:13
0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch (2,79 ko) 0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch Benjamin Dauvergne, 14 mai 2019 10:13
0001-utils-add-defer-module-to-run-things-later-31204.patch (6,64 ko) 0001-utils-add-defer-module-to-run-things-later-31204.patch Benjamin Dauvergne, 14 mai 2019 10:13
0002-utils-prevent-import-loop-31204.patch (2,2 ko) 0002-utils-prevent-import-loop-31204.patch Benjamin Dauvergne, 14 mai 2019 10:13
0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch (1,02 ko) 0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch Benjamin Dauvergne, 04 octobre 2019 02:04
0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch (2,81 ko) 0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch Benjamin Dauvergne, 04 octobre 2019 02:04
0001-utils-add-defer-module-to-run-things-later-31204.patch (6,64 ko) 0001-utils-add-defer-module-to-run-things-later-31204.patch Benjamin Dauvergne, 04 octobre 2019 02:04
0002-utils-prevent-import-loop-31204.patch (1,93 ko) 0002-utils-prevent-import-loop-31204.patch Benjamin Dauvergne, 04 octobre 2019 02:04
0002-base-use-deferrable-to-create-ResourceLog-objects-31.patch (2,71 ko) 0002-base-use-deferrable-to-create-ResourceLog-objects-31.patch Benjamin Dauvergne, 14 avril 2020 10:17
0003-views-wraps-GenericEndpointView.dispatch-with-deferr.patch (1,05 ko) 0003-views-wraps-GenericEndpointView.dispatch-with-deferr.patch Benjamin Dauvergne, 14 avril 2020 10:17
0001-utils-add-defer-module-to-run-things-later-31204.patch (6,64 ko) 0001-utils-add-defer-module-to-run-things-later-31204.patch Benjamin Dauvergne, 14 avril 2020 10:17
0002-base-use-deferrable-to-create-ResourceLog-objects-31.patch (3,05 ko) 0002-base-use-deferrable-to-create-ResourceLog-objects-31.patch Benjamin Dauvergne, 06 mai 2021 17:04
0003-views-wraps-GenericEndpointView.dispatch-with-deferr.patch (1,06 ko) 0003-views-wraps-GenericEndpointView.dispatch-with-deferr.patch Benjamin Dauvergne, 06 mai 2021 17:04
0001-utils-add-defer-module-to-run-things-later-31204.patch (6,64 ko) 0001-utils-add-defer-module-to-run-things-later-31204.patch Benjamin Dauvergne, 06 mai 2021 17:04
0002-base-use-deferrable-to-create-ResourceLog-objects-31.patch (3,03 ko) 0002-base-use-deferrable-to-create-ResourceLog-objects-31.patch Benjamin Dauvergne, 28 juillet 2022 15:33
0003-views-wraps-GenericEndpointView.dispatch-with-deferr.patch (1,11 ko) 0003-views-wraps-GenericEndpointView.dispatch-with-deferr.patch Benjamin Dauvergne, 28 juillet 2022 15:33
0001-utils-add-defer-module-to-run-things-later-31204.patch (6,61 ko) 0001-utils-add-defer-module-to-run-things-later-31204.patch Benjamin Dauvergne, 28 juillet 2022 15:33

Demandes liées

Lié à Passerelle - Development #82378: Avoir les logs des appels HTTP sur les jobs (avec un bloc atomic qui rollback)Rejeté16 octobre 2023

Actions

Révisions associées

Révision f63e250e (diff)
Ajouté par Benjamin Dauvergne il y a 6 mois

utils: add tools to execute actions outisde of transactions (#31204)

First use of it is to create ResourceLog objects after the current
transaction commit or abort.

Historique

#1

Mis à jour par Benjamin Dauvergne il y a environ 5 ans

  • Sujet changé de :es requêtes HTTP dans des blocs atomic() ne seront pas loggés à Les requêtes HTTP dans des blocs atomic() ne seront pas loggés

C'est idiot ce que je raconte, ça ne peut pas marcher avec on_commit il faut quelque chose qui s'exécute quelque soit l'état de la transaction bien sûr.

#2

Mis à jour par Benjamin Dauvergne il y a environ 5 ans

  • Tracker changé de Support à Development
#4

Mis à jour par Frédéric Péters il y a environ 5 ans

Je trouve bizarre d'un point de vue "langue" d'appeler "@deferred" ce qui se pose dans 0004, ça me semble plutôt être "@ici les trucs qui auraient été marqués @deferrable à l'intérieur verront leurs fins", sans être tout à fait séduit, quelque chose dans la direction de @deferrable_barrier ?

(ou alors je n'ai pas compris le sens du patch)

#5

Mis à jour par Benjamin Dauvergne il y a environ 5 ans

Frédéric Péters a écrit :

Je trouve bizarre d'un point de vue "langue" d'appeler "@deferred" ce qui se pose dans 0004, ça me semble plutôt être "@ici les trucs qui auraient été marqués @deferrable à l'intérieur verront leurs fins", sans être tout à fait séduit, quelque chose dans la direction de @deferrable_barrier ?

(ou alors je n'ai pas compris le sens du patch)

Pas mieux, mes limites en matière de vocabulaire anglais sont atteintes :) deferrable_zone/block sinon.

#11

Mis à jour par Nicolas Roche il y a environ 4 ans

(Ce que j'ai compris :
  • views.py : le décorateur deferrable_barrier sur dispatch() fait entrer les endpoints dans le gestionnaire de contexte.
  • base/models.py@ : le décorateur deferrable diffère l’enregistrement d'un nouvel objet RessourceLog,
    • si les prédicats sont vérifiées (ou s'il n'y en a pas)
    • et si l'on est préalablement entré dans le gestionnaire de contexte

En l'état, les prédicats ne sont pas utilisés, et donc les logs sur les endpoints sont tous différés.)

2 petites remarques sur la forme :
  • Mettre le copyright en 2020 : Copyright (C) 2019 Entr'ouvert
  • Pour moi ça aurait été plus compréhensible d'avoir des push/pop traitaient les fonctions différées plutôt que le contexte du gestionnaire (peut-être que la pratique est de mettre en avant la gestion du contexte, mais cela m'a d'abord surpris).
#12

Mis à jour par Nicolas Roche il y a presque 4 ans

Je me répond moi même :

En l'état, les prédicats ne sont pas utilisés, et donc les logs sur les endpoints sont tous différés.

Pas important car il n'y a que peu d'enregistrements de logs en base (pas de risque de consommation excessive de la mémoire).

Le code est bien testé et il vient discrètement s'ajouter à l'existant.
Selon moi il a peu de risque de casser l'existant, ou d'en compliquer sa compréhension (même si j'avoue aussi avoir eu du mal avec le patch lui même et son vocabulaire).
Sauf contre-ordre, je serais bien tenté de valider ici...

Question vocabulaire, peut-être :
  • deferrable_barrier -> defferable_context
  • deferrable_barrier.deferrable -> deferable_conntext.atexit
  • deferrable_barrier.deferrable_if_in_transaction -> deferable_context.atexit_transaction
#16

Mis à jour par Benjamin Dauvergne il y a environ un an

Je savais bien que ça arriverait un jour, impossible de débugger le ticket toulouse lié parce que "pas de logs dans un bloc atomic qui échoue".

#17

Mis à jour par Robot Gitea il y a environ un an

  • Statut changé de Solution proposée à En cours

Benjamin Dauvergne (bdauvergne) a ouvert une pull request sur Gitea concernant cette demande :

#18

Mis à jour par Benjamin Dauvergne il y a environ un an

J'ai revu ça pour un truc beaucoup plus simple à utiliser et à relire.

#19

Mis à jour par Benjamin Dauvergne il y a environ un an

  • Statut changé de En cours à Solution proposée
#20

Mis à jour par Benjamin Dauvergne il y a environ un an

  • Sujet changé de Les requêtes HTTP dans des blocs atomic() ne seront pas loggés à Les logs dans des blocs atomiques qui échouent ne sont pas conservés (rollback)

Je renomme le ticket, ce sera plus clair pour tout le monde. Comme souvent l'erreur vient de ce qu'a retourné un web-service ou ce qu'on lui a envoyé, on se retrouve avec juste la trace, éventuellement agrémentée de variables locales, pour comprendre.

#21

Mis à jour par Benjamin Dauvergne il y a 6 mois

Rebasé.

#22

Mis à jour par Benjamin Dauvergne il y a 6 mois

  • Lié à Development #82378: Avoir les logs des appels HTTP sur les jobs (avec un bloc atomic qui rollback) ajouté
#23

Mis à jour par Robot Gitea il y a 6 mois

  • Statut changé de Solution proposée à En cours

Nicolas Roche (nroche) a relu et demandé des modifications sur une pull request sur Gitea concernant cette demande :

#24

Mis à jour par Robot Gitea il y a 6 mois

  • Statut changé de En cours à Solution proposée
#25

Mis à jour par Robot Gitea il y a 6 mois

  • Statut changé de Solution proposée à Solution validée

Nicolas Roche (nroche) a approuvé une pull request sur Gitea concernant cette demande :

#26

Mis à jour par Robot Gitea il y a 6 mois

  • Statut changé de Solution validée à Résolu (à déployer)

Benjamin Dauvergne (bdauvergne) a mergé une pull request sur Gitea concernant cette demande :

#27

Mis à jour par Transition automatique il y a 6 mois

  • Statut changé de Résolu (à déployer) à Solution déployée
#28

Mis à jour par Transition automatique il y a 4 mois

Automatic expiration

Formats disponibles : Atom PDF