Bonjour à tous, Tout d'abord, Joyeux Noël, et Bonne Année! Le problème évoqué ci-dessous s'est semble-t'il résolu de lui-même... Des informations supplémentaires de l'exploitant du site ont établi que:
- Le site n'était en fait sous aucune charge. - Le test n'avait été effectué qu'avec un utilisateur unique. Pour essayer de mieux qualifier le problème une connexion a été effectuée avec un autre utilisateur. Le problème n'a pas été reproduit par ce test, et les connexions avec l'utilisateur original se sont mises à marcher correctement. Aucune modification n'a été apportée au site. Cordialement, Jonathan Winterflood -----Message d'origine----- De : Winterflood, Jonathan Envoyé : lundi 17 décembre 2007 11:58 À : 'M.-A. DARCHE'; [email protected] Objet : RE: [CPS-users-fr] CPSDefault logged_in conflict error Le problème est apparu il y a une semaine environ, je suppose que c'est en effet dû à la connexion simultanée du même utilisateur, et lié à la montée en charge du site. Il semblerait toutefois que ça arrive à chaque fois qu'un utilisateur se connecte. Je doute qu'a chaque fois il y aune autre personne qui se connecte en même temps... Serait-il possible qu'une transaction logged_in 'plantée' cause ce problème sur toutes les autres connexions d'utilisateurs? Une autre possibilité est que l'exploitant utilise approximativement le terme 'à chaque connexion' bien sur. A supposer que le problème se situe à ce niveau (cela me semble tout de même probable) > 1. Donner plusieurs comptes aux utilisateurs C'est une chose que l'on souhaite éviter. > 2. Désactiver l'enregistrement du last_login_time A priori la piste à explorer, je pense que nous n'utilisons pas cette information. En regardant le code, je trouve ceci: #################### login_time = member.getProperty('login_time', '2000/01/01') first_time = (str(login_time) == '2000/01/01') if first_time and member.has_role('Member'): mtool.createMemberArea() now = context.ZopeTime() member.setProperties(last_login_time=now, login_time=now) #################### Donc en théorie, le member.setProperties( n'est executé que si le membre n'a pas encore de propriété login_time (utilisation de '2000/01/01' comme valeur magique) Alors si le problème vient d'ici, ce traitement fonctionne-t'il correctement? Ou est-ce que quelque-chose m'échappe? > 3. Mettre un try/except autour du bloc de code gérant l'enregistrement du > last_login_time Sachant que l'erreur survient au moment du commit de transaction, ceci aura-t'il le moindre effet? Je dirais que non, puisque la transaction est comittée à la fin du traitement du script, et pas lors de l'appel de member.setProperties( Merci pour votre réponse rapide, Jonathan Winterflood -----Message d'origine----- De : [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] De la part de M.-A. DARCHE Envoyé : lundi 17 décembre 2007 10:26 À : [email protected] Objet : Re: [CPS-users-fr] CPSDefault logged_in conflict error 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/ This message contains information that may be privileged or confidential and is the property of the Capgemini Group. It is intended only for the person to whom it is addressed. If you are not the intended recipient, you are not authorized to read, print, retain, copy, disseminate, distribute, or use this message or any part thereof. If you receive this message in error, please notify the sender immediately and delete all copies of this message. _______________________________________________ cps-users-fr Adresse de la liste : [email protected] Gestion de l'abonnement : <http://lists.nuxeo.com/mailman/listinfo/cps-users-fr>
