On Fri, Mar 05, 2004 at 11:16:37AM +0000, Chris Withers wrote:
Hi Marco,
Hi.
Marco Bizzarri wrote:
We're trying to tackle a problem in hanging connections in ZPsycopg.
Hehe, I fixed this for ZOracleDA a couple of months ago. You may want to look at the thread pool code in there to see how I did it, gimme a nod if you need a URL (it's on a CVS branch in cvs.zope.org)
I took a look at that, the connections.CTM, and the other. The simple question is if this is a known problem with *ALL* db adapters, and, in this case, it could be possible to devise a general solution, or if this has something to do with psycopg. I've a scenario where I can produce hanging connections in ZPsycopg: 1) use page with sql methods 2) refresh a product 3) repeat 1) 4) refresh a product if you have 4 threads, you should have now 5 connections. Obviously here there is something wrong with the management of _v_ attributes, in particular the _v_database_connection in the DA.py. The psycopg code is quite similar to the basic DA.py code, so I was looking for other ways of approaching the problem.
However, I would like to have some information about the functioning of the _v_ attributes, and the cache management. In particular:
1) where is the code which handles the _v_ attributes (I like to look at the source code, you know ;))
Never bothered finding it, the sematics are pretty well documented.
Yes, actually.
2) where is the code which handles the caching of the objects?
The ZODB cache. It's big and complicated, trust me, you DON'T need to go there...
:(
3) is it possible to disable caching of some object?
No. The fact that you want to means you're mis-using _v_ attributes ;-)
My feeling was that the hanging connection problem was related to the cache... so the question (I'm not using _v_ attributes in any particular way)
4) when an _v_ attribute is removed, what code of the object/attribute itself is called?
None. I believe it gets lost at the object is ghosted.
If possible, please answer also directly to me (I'm not on this list).
Are you maintaining ZPsychopg? If not, the maintainers might be able to help...
No, actually we've a db application which makes a lot of use of zpsycopg for insert/updates, not only for select, and we stumbled on this problem. We're working with Federico Di Gregorio (psycopg mantainer) in order to solve the problem.
cheers,
Chris - who learnt a whole lot more about ZODB and ZODB caching when solving this kind of problem in ZOracleDA ;-)
I suspect I will have to learn something in the hard way too :)
-- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk
Thanks for your help Regards Marco -- Marco Bizzarri - Amministratore Delegato - Icube S.r.l. Sede: Via Ridolfi 15 - 56124 Pisa (PI), Italia E-mail: m.bizzarri@icube.it WWW: www.icube.it Tel: (+39) 050 97 02 07 Fax: (+39) 050 31 36 588