[Zope-dev] Unpickleable Error

Brian Lloyd Brian@digicool.com
Tue, 20 Jun 2000 10:00:57 -0400


> > The product isn't using cStringIO.  I didn't even know it 
> existed until
> > now ;)  I stepped through the code, and in 
> lib/python/ZODB/Connection.py
> > in the commit() function, when it gets to the line 
> dump(state) on line
> > 347 where state is (apparently) all the correct information for my
> > object, it gets the UnpickleableError.  I noticed in the 
> Collector that
> > bug #383 was about Unpickleable errors with SQL methods.  The object
> > that's trying to get pickled in this case contains SQL methods.
> > Granted, bug 383 was from around this time last year, but 
> it's the best
> > lead I've got so far.  I don't use cStringIO anywhere in my product.
> 
> Well.... since my product *does* use the SQL class, and the SQL class
> uses the DA class, and the DA class uses cStringIO, I guess
> *technically* I am using it.  We create SQL methods then store them as
> properties of the class.  This may be what it's choking on.

It shouldn't be - SQLMethods don't ever actually assign a StringIO
to anything but transient variables. The Results object returned 
from a query could in some cases wrap a StringIO instance - you don't 
do anything in your product where Results objects would be stored 
as object attributes do you? If this were a problem common to all 
SQLMethod objects then I would expect people to be seeing this error 
all over the place. Is anyone else seeing this?

If you're not storing Results anywhere, it would be helpful to see 
the str() of the 'state' being dumped in commit() - also to know 
what database adapter/version you are using...


Brian Lloyd        brian@digicool.com
Software Engineer  540.371.6909              
Digital Creations  http://www.digicool.com