It writes and reads objects in the session, maybe the probleme comes from
here ? Here's a little sinppet :

   def toutCompter(self):
       """
   xmlrpc methode, called from a web borwser.
       """
       documentXML = ComptageXML()
   #this reads and writes objects in the session
       dicoLignes  = self._fabriquerDicoLignes()
   #do things with dicoLignes
       for inumLigneCourante in xrange(borneInf,borneSup) :
           snumLigneCourante = str(inumLigneCourante)
           ligne = dicoLignes[snumLigneCourante]["requete"]
       #do things here
           self._ajouterAuDico(snumLigneCourante,ligne,comptage,arbre)

       if ligne :
           self._mettreEnSession(resultats)

       response = self.REQUEST.RESPONSE
       response.setHeader("Content-Type","text/xml")
       response.setHeader("charset","utf-8")
       chaineXML = documentXML.formatXML()
       print "sending results to "+addresseIP
       return chaineXML

   def _fabriquerDicoLignes(self):
       formulaire = self.getForm()
       dicoLignes = self.getSession(self,"dicoLignes") or {}
       for key in formulaire.keys():
       #do things...
       self.setSession("dicoLignes", dicoLignes)
       return dicoLignes

   def _fabriquerListeLignes(self):
       dicoLignes = RacineAbstraite.getSession(self,"dicoLignes") or {}
       listeNumeros = dicoLignes.keys()
       listeNumeros.sort( lambda x,y: cmp(int(x), int(y)) )
       return [ dicoLignes[str(inumeroLigne)]["requete"] for inumeroLigne
in \
               sorted( [int(snumeroLigne) for snumeroLigne in
dicoLignes.keys()] ) ]

   def _ajouterAuDico(self,p_snumeroCle,p_ligne,p_comptage,p_arbre):
       dicoLignes = RacineAbstraite.getSession(self,'dicoLignes') or {}
       dicoLignes[p_snumeroCle]  =
{'requete':p_ligne,'comptage':p_comptage,'arbre':p_arbre}
       self.setSession('dicoLignes',dicoLignes)

   def _mettreEnSession(self,p_resultats):
       """
       Mettre en session les résultats d'un comptage.
       """

       # Initialise de la SESSION
       dicoResultatRecherche = {
           'listeCriteres'     : [self._fabriquerListeLignes(),
self.getForm('numeroLigne')],
           'nombreEntreprises' : p_resultats[0][0],
           'listeComptage'     : p_resultats,
           'listeEntreprises'  : [],
           }
       #On conserve la requete et le resultat en session
       self.setSession('resultatRecherche', p_dicoResultatRecherche.copy())


When toutCompter is called by browser 1, then he will write and read, say,
the dicoLignes object in the session.
When toutCompter is called by browser 2 parallely, is it the same dicoLignes
object that it tries to access or another one is created ? can there be
conflicts somehow ?

Y.Chaouche

2007/1/19, yacine chaouche <[EMAIL PROTECTED]>:

I mean triple couples of lines of code.

2007/1/19, yacine chaouche <[EMAIL PROTECTED]>:
>
> The toutCompter methode does a lot of thing and it would take a triple
> couples of lines to describe what it does all.
> Anyway, is there a way for me to detect ConflictErrors ? they don't
> appear on the console so i guess they are catched.
>
> Y.Chaouche
>
> 2007/1/19, Gabriel Genellina <[EMAIL PROTECTED] >:
> >
> > At Thursday 18/1/2007 16:30, Andreas Jung wrote:
> >
> >
> > ><zope trace to the console>
> > >ip: 10.75.49.155 requests counting of lines 1 to 11
> > >ip: 10.75.49.51 requests counting of lines 1 to 11
> > >sending results to 10.75.49.155
> > >sending results to 10.75.49.51
> > >ip: 10.75.49.51 requests counting of lines 1 to 11
> > >sending results to 10.75.49.51
> > ></zope trace>
> > >
> > >
> > >Zope says he got 2 requests form 10.75.49.51 and sent it the results
> > 2
> > >times. Ok, let's check the tcpflow then for these supposed
> > connections :
> > >[...]
> > >Allright, there is only ONE POST request. So zope didnt really got
> > two
> > >requests. Now let's see if it sent the data two times as it presumes
> > :
> > >[...]
> > >The results were sent just one time, not two.
> > >
> > >What is going on here ?
> >
> > What does the toutCompter method really does? Does it modify some
> > object state? That might provoke a ConflictError, forcing a
> > transaction abort and the request to be re-tried (up to three times,
> > silently, then it goes logged).
> >
> >
> > --
> > Gabriel Genellina
> > Softlab SRL
> >
> >
> >
> >
> >
> >
> > __________________________________________________
> > Preguntá. Respondé. Descubrí.
> > Todo lo que querías saber, y lo que ni imaginabas,
> > está en Yahoo! Respuestas (Beta).
> > ¡Probalo ya!
> > http://www.yahoo.com.ar/respuestas
> >
> > _______________________________________________
> > Zope maillist  -  Zope@zope.org
> > http://mail.zope.org/mailman/listinfo/zope
> > **   No cross posts or HTML encoding!  **
> > (Related lists -
> > http://mail.zope.org/mailman/listinfo/zope-announce
> >  http://mail.zope.org/mailman/listinfo/zope-dev )
> >
>
>

_______________________________________________
Zope maillist  -  Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to