Project

General

Profile

Bug #58985

ne pas avoir le cache de bloc dans le pickle

Added by Frédéric Péters 2 days ago. Updated about 23 hours ago.

Status:
Résolu (à déployer)
Priority:
Normal
Target version:
-
Start date:
25 Nov 2021
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

Description

(analyse Manu dans #58960#note-7).


Files

Associated revisions

Revision 014dfb01 (diff)
Added by Frédéric Péters about 23 hours ago

fields: do not store cached block in pickle (#58985)

History

#1

Updated by Frédéric Péters 2 days ago

(patch qui serait à compléter d'un test mais pour ça il faudrait trouver le moment où ce formdef avec bloc et cache est apparu).

#3

Updated by Thomas Noël 2 days ago

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

(patch qui serait à compléter d'un test mais pour ça il faudrait trouver le moment où ce formdef avec bloc et cache est apparu).

Le test ne pourrait pas être la vérification qu'un FormDef.get(42) contenant un bloc ne contient pas la modification des fields de celui-ci ? (ie ce que fait Manu dans #58960, note 7) ?

#4

Updated by Frédéric Péters 2 days ago

Le test ne pourrait pas être la vérification qu'un FormDef.get(42) contenant un bloc ne contient pas la modification des fields de celui-ci ? (ie ce que fait Manu dans #58960, note 7) ?

J'aimerais le moment, qui ne soit pas artificiellement créé, qui amène cette situation :

le formdef
un accès formdef.fields[0].block qui le met en cache
formdef.store()

Mon idée va déjà être l'exécution des tests avec ce patch et un pdb dans la condition, pour voir si ça y arrive, mais je crains que non et qu'on soit sur quelque chose de plus rare.

#5

Updated by Frédéric Péters 1 day ago

pour voir si ça y arrive

ça arrive sur plein de moments, copy.deepcopy pour les variables de contexte (là je pense jamais de soucis) mais aussi pour les afterjob; je n'ai pas cheché à en isoler un précis mais je dirais que ça peut arriver d'y avoir un formdef.store().

Bref, patch avec un test artificiel.

#6

Updated by Lauréline Guerin 1 day ago

  • Status changed from Solution proposée to Solution validée
#7

Updated by Thomas Noël 1 day ago

pylint n'aime pas la ligne 769 "formdef.fields0.block" dans les tests. Certainement facile à contourner avec un commentaire ou une fausse affectation.

En tout cas pour moi c'est tout bon.

#8

Updated by Frédéric Péters about 23 hours ago

  • Status changed from Solution validée to Résolu (à déployer)

(ajusté pour pylint)

commit 014dfb01fe70ece35348aad2c51a4de00bd1e6e8
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Thu Nov 25 12:17:31 2021 +0100

    fields: do not store cached block in pickle (#58985)

Also available in: Atom PDF