quetz-mod_python-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael C. Neel" <n...@mediapulse.com>
Subject Re: server cleanup functions run in restricted mode
Date Tue, 06 Apr 2004 22:58:15 GMT
Hmm, could this be related then?

We have several sites, all vhosts, that run some code and place a db 
handle in a global var (db).  Not every request, but frequent enough to 
cause concern we get an error that host a tried to run a query on host 
b's db object (usually results in a MySQLdb error that the given 
database doesn't have table x).

I've tried naming the globals differently, i.e. db1 and db2, but the 
problem still occurs.  It's also crossed between different handlers and 
different hosts - a fixup in server confused with a content in b.  The 
only thing I've found to avoid the issue is create and destroy the db 
inside of the request  - which doesn't allow for persistent connections.

FYI I did discover a MySQLdb issue that causes (any version) to not be 
able to be garbage collected.  Searching sf.net bugs I found the reports 
and cause and fixed the version we have.  So I'm not ruling out 
MySQLdb's role in the problem.

This occurs on 2.7.10 servers (and 2.7.8+), but I have not seen it on 
3.x - and given the traffic I have on some of the 3.x boxes I would have 
seen it if it was going on.  I'm hoping to get a chance to try and 
recreate the problem on a test server here shortly.


Gregory (Grisha) Trubetskoy wrote:

>What version of mod_python is this?
>Restricted mode is a strange beast, in that there isn't really anything
>like a "restricted mode" flag, but it looks at a pointer somwhere (don't
>remember now), and if it's not what is expected, it concludes that it's in
>restricted mode. So this behaviour is actually a sign of a bug where an
>object is created in one subinterpreter but is running in another... These
>bugs can be hard to track down.
>On Tue, 6 Apr 2004, David Fraser wrote:
>>It seems that server cleanup functions registered with
>>server.register_cleanup run in restricted mode.
>>I'm trying to use them to close a database connection and being run in
>>restricted mode causes problems.
>>I can't see in the code where this gets set, but I get the following error:
>>[Tue Apr 06 17:16:01 2004] [error] python_cleanup: Error calling cleanup
>>object <bound method jLogbookMultiServer.onshutdown of
>><jLogbook.python.jlogbook.jLogbookMultiServer object at 0x00A62670>>
>>[Tue Apr 06 17:16:01 2004] [error]     exceptions.RuntimeError:
>>instance.__dict__ not accessible in restricted mode
>>Is there a reason that the server functions needed to be run in
>>restricted mode, or is there a better way I should do this?

View raw message