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>