Project

General

Profile

Bug #13964

trigger_jump : jump_and_perform de plus en plus lent...

Added by Thomas Noël almost 6 years ago. Updated almost 6 years ago.

Status:
Fermé
Priority:
Normal
Assignee:
Target version:
Start date:
14 November 2016
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:

Description

Avec une petite modif affichant la durée en seconde de chaque jump_and_perform :

0.261832
0.3322
0.447266
0.628633
0.690958
0.848752
0.983511
1.049814
1.217503
1.324358
1.454672
1.568721
1.698665
1.875317
1.926306
2.061496
2.211623
2.256925
2.411533
2.58176
2.682311
2.78373
2.93357
3.066028
3.184602
4.918063
3.496641
3.542648
3.707872
3.759889
5.859611
4.029153
4.22205
4.258166
4.375261
4.556175
4.642614
4.74325
4.959161
5.061929
5.170525
5.179132
...

Sur un trigger avec 2 ou 300 remontées, cela devient vite bloquant.


Files

Associated revisions

Revision 62c0b5bd (diff)
Added by Thomas Noël almost 6 years ago

trigger_jumps: reset substitution variables on each formdata (#13964)

History

#1

Updated by Thomas Noël almost 6 years ago

Première tentative de reproduction :

Script :

import datetime
from wcs.formdef import FormDef
from wcs.wf.jump import jump_and_perform

for formdata in FormDef.get(247).data_class().select():
    print 'jump_and_perform', formdata, 'in',
    d1 = datetime.datetime.now() 
    jump_and_perform(formdata, '2')
    print (datetime.datetime.now() - d1).total_seconds()

Résultat non concluant :

$ sudo -u wcs-au-quotidien wcsctl -f /etc/wcs/wcs-au-quotidien.cfg runscript --vhost=demo.dev.au-quotidien.com /tmp/jumps.py  
jump_and_perform <Jump 'jump #247-14' id:14> in 0.07793
jump_and_perform <Jump 'jump #247-3' id:3> in 0.050058
jump_and_perform <Jump 'jump #247-2' id:2> in 0.049923
jump_and_perform <Jump 'jump #247-18' id:18> in 0.049959
jump_and_perform <Jump 'jump #247-16' id:16> in 0.049923
jump_and_perform <Jump 'jump #247-12' id:12> in 0.049931
jump_and_perform <Jump 'jump #247-11' id:11> in 0.050702
jump_and_perform <Jump 'jump #247-8' id:8> in 0.091539
jump_and_perform <Jump 'jump #247-5' id:5> in 0.050019
jump_and_perform <Jump 'jump #247-7' id:7> in 0.050075
jump_and_perform <Jump 'jump #247-19' id:19> in 0.049947
jump_and_perform <Jump 'jump #247-4' id:4> in 0.049988
jump_and_perform <Jump 'jump #247-15' id:15> in 0.049898
jump_and_perform <Jump 'jump #247-10' id:10> in 0.050077
jump_and_perform <Jump 'jump #247-1' id:1> in 0.049962
jump_and_perform <Jump 'jump #247-6' id:6> in 0.050037
jump_and_perform <Jump 'jump #247-13' id:13> in 0.049881
jump_and_perform <Jump 'jump #247-17' id:17> in 0.049995
jump_and_perform <Jump 'jump #247-9' id:9> in 0.049915
jump_and_perform <Jump 'jump #247-20' id:20> in 0.049962

#2

Updated by Thomas Noël almost 6 years ago

En ajoutant une action d'envoi de mail lors du jump (dans https://demo.dev.au-quotidien.com/backoffice/workflows/82/status/2/) :

jump_and_perform <Jump 'jump #247-17' id:17> in 0.231491
jump_and_perform <Jump 'jump #247-6' id:6> in 0.233463
jump_and_perform <Jump 'jump #247-10' id:10> in 0.201663
jump_and_perform <Jump 'jump #247-8' id:8> in 0.223233
jump_and_perform <Jump 'jump #247-3' id:3> in 0.241646
jump_and_perform <Jump 'jump #247-1' id:1> in 0.275075
jump_and_perform <Jump 'jump #247-5' id:5> in 0.266627
jump_and_perform <Jump 'jump #247-12' id:12> in 0.284971
jump_and_perform <Jump 'jump #247-9' id:9> in 0.308302
jump_and_perform <Jump 'jump #247-4' id:4> in 0.350006
jump_and_perform <Jump 'jump #247-18' id:18> in 0.349858
jump_and_perform <Jump 'jump #247-7' id:7> in 0.356918
jump_and_perform <Jump 'jump #247-16' id:16> in 0.368179
jump_and_perform <Jump 'jump #247-11' id:11> in 0.399853
jump_and_perform <Jump 'jump #247-19' id:19> in 0.499192
jump_and_perform <Jump 'jump #247-13' id:13> in 0.450732
jump_and_perform <Jump 'jump #247-2' id:2> in 0.458376
jump_and_perform <Jump 'jump #247-14' id:14> in 0.483356
jump_and_perform <Jump 'jump #247-15' id:15> in 0.633248
jump_and_perform <Jump 'jump #247-20' id:20> in 0.516703

#3

Updated by Frédéric Péters (de retour le 10/10) almost 6 years ago

(faut des mots autour pour que je comprenne)

#4

Updated by Thomas Noël almost 6 years ago

Donc, dans le saut que je déclenche avec jump_and_perform(formdata, '2') j'ai ajouté une action d'envoi de mail.

Il semble que cette action prend "de plus en plus de temps".

Je n'ai pas testé toutes les autres actions encore, mais c'est la seule pour laquelle je constate le soucis.

#5

Updated by Thomas Noël almost 6 years ago

Donc cela vient du faire que le publisher a des sources de variable de substitution qui ne cessent de grandir, car trigger_jump ne les mets pas à zéro à chaque nouveau formdata.

SOURCES: [<Jump 'jump #247-5' id:5>]
SOURCES: [<Jump 'jump #247-5' id:5>, <Jump 'jump #247-14' id:14>]
SOURCES: [<Jump 'jump #247-5' id:5>, <Jump 'jump #247-14' id:14>, <Jump 'jump #247-9' id:9>]
...
#6

Updated by Thomas Noël almost 6 years ago

(pour clarifier l'extrait ci-dessus : Jump/jump est le nom du formulaire, il s'agit donc d'une aggregation de formdata)

#7

Updated by Thomas Noël almost 6 years ago

Une solution un peu sale, mais qui marche.

#8

Updated by Frédéric Péters (de retour le 10/10) almost 6 years ago

Il y a même pas besoin de changer la signature, tu peux faire formdata.formdef dans la fonction. À part ça, ça me semble ok. (bien sûr ça serait bien chouette d'avoir des tests autour de cette commande).

#9

Updated by Thomas Noël almost 6 years ago

Voilà, avec du test.

Y'a une partie un peu hardcoded dans le test, qui vise le présent ticket (lors du "# check publisher substitutions vars...").

#10

Updated by Frédéric Péters (de retour le 10/10) almost 6 years ago

  • Status changed from En cours to Résolu (à déployer)

L'import de CmdTriggerJumps n'est au final pas utilisé, je l'ai retiré et poussé :

commit 62c0b5bd6276b9f41a0b8c1ba2bf026ebdaf946d
Author: Thomas NOEL <tnoel@entrouvert.com>
Date:   Mon Nov 14 18:12:38 2016 +0100

    trigger_jumps: reset substitution variables on each formdata (#13964)
#11

Updated by Frédéric Péters (de retour le 10/10) almost 6 years ago

  • Target version set to v1.65
#12

Updated by Frédéric Péters (de retour le 10/10) almost 6 years ago

  • Status changed from Résolu (à déployer) to Fermé

Also available in: Atom PDF