Project

General

Profile

Development #31204

Les requêtes HTTP dans des blocs atomic() ne seront pas loggés

Added by Benjamin Dauvergne over 1 year ago. Updated 6 months ago.

Status:
Solution proposée
Priority:
Normal
Target version:
-
Start date:
07 Mar 2019
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

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

0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch View (1008 Bytes) Benjamin Dauvergne, 20 Mar 2019 10:20 PM

0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch View (2.75 KB) Benjamin Dauvergne, 20 Mar 2019 10:20 PM

0001-utils-add-defer-module-to-run-things-later-31204.patch View (6.4 KB) Benjamin Dauvergne, 20 Mar 2019 10:20 PM

0002-utils-prevent-import-loop-31204.patch View (2.2 KB) Benjamin Dauvergne, 20 Mar 2019 10:20 PM

0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch View (1015 Bytes) Benjamin Dauvergne, 22 Mar 2019 11:05 PM

0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch View (2.79 KB) Benjamin Dauvergne, 22 Mar 2019 11:05 PM

0001-utils-add-defer-module-to-run-things-later-31204.patch View (6.63 KB) Benjamin Dauvergne, 22 Mar 2019 11:05 PM

0002-utils-prevent-import-loop-31204.patch View (2.2 KB) Benjamin Dauvergne, 22 Mar 2019 11:05 PM

0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch View (1017 Bytes) Benjamin Dauvergne, 19 Apr 2019 10:20 AM

0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch View (2.79 KB) Benjamin Dauvergne, 19 Apr 2019 10:20 AM

0001-utils-add-defer-module-to-run-things-later-31204.patch View (6.64 KB) Benjamin Dauvergne, 19 Apr 2019 10:20 AM

0002-utils-prevent-import-loop-31204.patch View (2.2 KB) Benjamin Dauvergne, 19 Apr 2019 10:20 AM

0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch View (1.02 KB) Benjamin Dauvergne, 14 May 2019 10:13 AM

0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch View (2.79 KB) Benjamin Dauvergne, 14 May 2019 10:13 AM

0001-utils-add-defer-module-to-run-things-later-31204.patch View (6.64 KB) Benjamin Dauvergne, 14 May 2019 10:13 AM

0002-utils-prevent-import-loop-31204.patch View (2.2 KB) Benjamin Dauvergne, 14 May 2019 10:13 AM

0004-views-wraps-GenericEndpointView.dispatch-with-deferr.patch View (1.02 KB) Benjamin Dauvergne, 04 Oct 2019 02:04 AM

0003-base-use-deferrable-to-create-ResourceLog-objects-31.patch View (2.81 KB) Benjamin Dauvergne, 04 Oct 2019 02:04 AM

0001-utils-add-defer-module-to-run-things-later-31204.patch View (6.64 KB) Benjamin Dauvergne, 04 Oct 2019 02:04 AM

0002-utils-prevent-import-loop-31204.patch View (1.93 KB) Benjamin Dauvergne, 04 Oct 2019 02:04 AM

0002-base-use-deferrable-to-create-ResourceLog-objects-31.patch View (2.71 KB) Benjamin Dauvergne, 14 Apr 2020 10:17 AM

0003-views-wraps-GenericEndpointView.dispatch-with-deferr.patch View (1.05 KB) Benjamin Dauvergne, 14 Apr 2020 10:17 AM

0001-utils-add-defer-module-to-run-things-later-31204.patch View (6.64 KB) Benjamin Dauvergne, 14 Apr 2020 10:17 AM

History

#1 Updated by Benjamin Dauvergne over 1 year ago

  • Subject changed from :es requêtes HTTP dans des blocs atomic() ne seront pas loggés to 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 Updated by Benjamin Dauvergne over 1 year ago

  • Tracker changed from Support to Development

#4 Updated by Frédéric Péters over 1 year ago

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 Updated by Benjamin Dauvergne over 1 year ago

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 Updated by Nicolas Roche 6 months ago

(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 Updated by Nicolas Roche 6 months ago

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

Also available in: Atom PDF