Winterflood, Jonathan a écrit :
> 
> Sur un site en production basé sur CPSDefault, nous rencontrons cette
> erreur:
> 
> Type:
> 
> ConflictError
> 
> Error
> 
> Value:
> 
> database conflict error (oid 0x1f56, class
> Products.CPSDirectory.ZODBDirectory.ZODBDirectoryEntry, serial this txn
> started with 0x03720e71d0e53577 2007
> 
> Traceback:
> 
> Traceback (innermost last):
> 
> _ Module Zope2.App.startup, line 173, in zpublisher_exception_hook
> 
> _ Module ZPublisher.Publish, line 121, in publish
> 
> _ Module Zope2.App.startup, line 240, in commit
> 
> _ Module transaction._manager, line 96, in commit
> 
> _ Module Products.CPSCompat.PatchZODBTransaction, line 175, in commit
> 
> _ Module transaction._transaction, line 436, in _commitResources
> 
> _ Module ZODB.Connection, line 665, in tpc_vote
> 
> _ Module ZEO.ClientStorage, line 893, in tpc_vote
> 
> _ Module ZEO.ClientStorage, line 877, in _check_serials
> 
> ConflictError: database conflict error (oid 0x1f56, class
> Products.CPSDirectory.ZODBDirectory.ZODBDirectoryEntry, serial this txn
> started with 0x03720e71d0e53577 2007
> 
> Celle-ci apparait à la connexion d’un utilisateur, lors de l’accès au
> script /logged_in/, mais n’empêche pas la connexion (ni le bon
> fonctionnement du reste du site)
> 
> Un certain nombre de personnes partagent le même /user/ CPS, si cela
> peut être un indicateur…
> 
> Je n’arrive pas à reproduire le problème en développement.
> 
> Le script logged_in est celui de CPSDefault, sauf que l’URL de
> redirection est toujours portal_absolute_url.
> 
> Je n’ai jamais rencontré de conflits auparavant… quelqu’un aurait-il une
> piste pour diriger mes recherches ? [Je me doute bien qu’il n’y a pas
> assez d’informations ici pour trouver le problème…]
> 

Dans logged_in.py il y a une écriture qui est faite pour garder
la trace de la date de connexion de l'utilisateur :

member.setProperties(login_time=now, last_login_time=login_time)

Si plusieurs utilisateurs avec le même compte se connectent au portail
en même temps cela peut générer des conflits.

Solutions :

1. donner plusieurs comptes aux utilisateurs
2. désactiver l'enregistrement du last_login_time
3. mettre un try/except autour du bloc de code gérant l'enregistrement
   du last_login_time


Bien cordialement,

-- 
Marc-Aurèle DARCHE
Open Source Enterprise Content Management (ECM)   http://www.nuxeo.org/
NUXEO (Paris, France)                             http://nuxeo.com/

_______________________________________________
cps-users-fr 
Adresse de la liste : [email protected]
Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>

Répondre à