[Zope-dev] Re: Preliminary findings: Zope 2.7 leakage caused by errors

"J. David Ibáñez" jdavid at itaapy.com
Thu May 20 10:16:55 EDT 2004


The "a" in 1.1.0a3 means "alpha". If the problem is in Localizer
1.0.1 I think it will be in 1.1.0a3 too.

Yes, I have a site with a similar behaviour, unfortunately today
the network connection is too slooow, so I can't test that site. I'm
going to do some local tests, though.

Yes, the problem might be the fact that "new_publish" does not
catch exceptions to remove the request from the dictionary.



Jean-Francois.Doyon at CCRS.NRCan.gc.ca wrote:

>Juan David,
>
>I'm using 1.0.1 ... I'm just abotu to try and test with 1.1.0a3 ...
>
>BTW, does that mean it's alpha software or something? is 1.1.0 stable?
>
>If the problem comes from Localizer I suspect this patch might be the cause:
>
>def new_publish(request, module_name, after_list, debug=0): 
>    id = get_ident() 
>    print "Localizer got thread id: " + str(id)
>    Publish._requests[id] = request 
>    print "Request dict is now: " + str(Publish._requests)   
>    x = Publish.old_publish(request, module_name, after_list, debug) 
>    try:
>        del Publish._requests[id]
>    except KeyError:
>        # XXX 
>        # Some people has reported that sometimes a KeyError exception is
>        # raised in the previous line, I haven't been able to reproduce it.
>        # This try/except clause seems to work. I'd prefer to understand
>        # what is happening.
>        LOG('Localizer', PROBLEM,
>            "The thread number %s don't has a request object associated." %
>id)
>    except:
>        print "Localizer got an exception" 
> 
>    return x 
>
>What happens if an exception occurs here:
>
>    x = Publish.old_publish(request, module_name, after_list, debug) 
>
>??
>
>If some clean up code is supposed to occur it might be held back by the fact
>that
>there's a reference to the request kept in the global dictionary ...
>At least that's my theory :)
>But then I'm mostly uneducated about the intricacies of exception handling
>at this
>level, though I've been forced to learn quickly :)
>
>I'd be curious to know at least if you can reproduce the leak by generating
>loads
>of errors on a Localizer enabled site?
>
>One option would also be to simply wrap it in a try:catch and see what
>happens there
>... But I noticed 1.1.0a3 uses a different model for wrapping the request,
>so that
>just might do the trick.
>
>Thanks for a very cool and useful product BTW.  This is combination with the
>TranslationService is saving me loads of time.
>
>Cheers,
>J.F.
>
>-----Original Message-----
>From: zope-dev-bounces at zope.org [mailto:zope-dev-bounces at zope.org]On
>Behalf Of "J. David Ibáñez"
>Sent: May 20, 2004 6:47 AM
>To: Tres Seaver
>Cc: Jean-Francois.Doyon at ccrs.nrcan.gc.ca; brian at zope.com;
>chrism at plope.com; zope-dev at zope.org
>Subject: [Zope-dev] Re: Preliminary findings: Zope 2.7 leakage caused by
>errors
>
>
>
>Localizer (1.0.1) dynamically patches Zope, it stores a dictionary in 
>the module
>"ZPublisher.Publish". The keys are integers, they are the values 
>returned by Python's
>"thread.get_ident". The values are "ZPublisher.HTTPRequest.HTTPRequest"
>instances, they are not acquisition wrappers.
>
>Jean-François, which Localizer version do you use? Just to be sure we 
>look at
>the same code.
>
>
>  
>


-- 
J. David Ibáñez
Founder and CTO of Itaapy <http://www.itaapy.com>
9 rue Darwin, 75018 Paris
Tel +33 (0)1 42 23 67 45 / Fax +33 (0)1 53 28 27 88 




More information about the Zope-Dev mailing list