Re: zodb transaction rollback
Racinet Georges <[email protected]> Thu, 23 Apr 2009 14:21:54 +0200
| Newsgroups | gmane.comp.web.zope.cps.general.french |
|---|---|
| Message-ID | <[email protected]> |
On Apr 23, 2009, at 10:49 AM, Malika LBAOUCH wrote: > Bonjour, Bonjour Malika ! > > Lorsque je cr=E9e des documents avec la m=E9thode invokefactory il = > arrive que mon traitement plante au bout d'un certain temps. > > Il me pr=E9sente le message The id "LCOL-2009-087_1240345985" is = > invalid - it is already in use alors que l'id est sens=E9 =EAtre unique = > =E9tant g=E9n=E9r=E9 avec la date et l'heure =E0 la seconde pr=E8s. Quelle qu'en soit la cause, il a sans doute raison =E0 ce stade. Il = faudrait de toute fa=E7on r=E9gler ce probl=E8me dans ton code, par exemple= = en testant si l'id en question est d=E9j=E0 pris, et en s'autorisant =E0 = rajouter un chiffre de plus si ce n'est le cas. C'est ce que fait par = exemple le cpsdocument_create_do, en passant par le script computeId, = que tu peux trouver dans CPSDefault. > Je voudrais pouvoir commiter la transaction de cr=E9ation d'un = > document pour =E9viter qu'il ne fasse un rollback de la cr=E9ation de = > tous les documents pr=E9c=E9dents celui qui plante. > Auriez vous un exemple de ce type de r=E9alisation? merci d'avance. =C7a peut se faire, mais ne r=E9glera pas le probl=E8me de cr=E9ation, =E7a= = devrait aussi calmer (un peu) les conflits. en Zope 2.7 c'=E9tait get_transaction().commit() la fonction get_transaction() est normalement toujours dispo dans le = contexte Je ne sais plus s'il faut encha=EEner avec une recr=E9ation explicite de = transaction avec get_transaction().begin(). Essaye avec et sans sur = une instance de tests/d=E9veloppement. Pour info, en Zope 2.8 et 2.9, c'est import transaction transaction.commit() Tout =E7a est =E0 faire en code non restreint, mais il semble bien que ce = soit ton cas (produit AcossDocs). > > ci-joints les param=E8res de config niveau caches zope et zodb (config = > zeo avec 2 clients zope) > Peut =EAtre que =E7a peut expliquer les temps de r=E9ponse extremement = > longs avant le plantage (1h30 pour cr=E9er 15 documents sans arriver = > au bout puisque le rollback zope annule la transaction...). Sur une telle longueur, je dirais a priori qu'il doit y avoir des = conflits, ce qui ne fait bien s=FBr qu'aggraver les chose. Quoi qu'il = en soit, les 15 Go c'est peut-=EAtre beaucoup, je suppose que les = fichiers attach=E9s sont stock=E9s directement en ZODB ? En tout cas une chose est s=FBre, ton instance est malade, et 1h30, =E7a = n'est pas tol=E9rable, m=EAme si =E7a redescend =E0 30 mn avec une gestion = explicite de transaction. -- Georges Racinet, http://www.racinet.fr Zope/CPS/Plone expertise, assistance & development GPG: 0x4862FFF7 _______________________________________________ cps-users-fr Adresse de la liste : [email protected] Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-user= s-fr>