[Zope-dev] Conflict errors on BDBMinimal storage

Chris McDonough chrism at plope.com
Mon May 17 15:10:48 EDT 2004


On Mon, 2004-05-17 at 14:57, Gerhard Schmidt wrote:
> > > Why isn´t there an implementation of temporary storage for ZEO
> > 
> > There is, just use the "tempstorage" package from Zope.
> 
> I didn´t find a way to use Tempstorage in zeo.     
> 
> <temporarystorage>
>    name temporary storage for sessioning
> </temporarystorage>
> 
> didn´t work. How do i Set up a temporarystorage in zeo. 

Good question. ;-)  It involves changing the ZEO configuration machinery
to recognize the tempstorage package.  The steps to do this I couldn't
tell you without actually doing it, however.

> > > I dont care about conflit resolution. Its only session data.
> > 
> > For better or worse, because it is based on ZODB, the implementation
> > makes you need to care.
> 
> Than maybe the sessioncode should be redesigned not to use ZODB as 
> storage but store ther information in some different system maybe 
> a RDMB or some other system able to handle the kind of usage. 

Zope doesn't ship with a useful and maintained relational database.  You
can implement your own SQL-based TransientObjectContainer using the
interfaces defined in Transience/Interfaces.py if you wish, or use
Anthony Baxter's SQLSession product.  It would be nice if there was an
alternate implementation that used a relational database like this.

> > > I simply 
> > > need a shared session storage. But as Far as i can see the is no way 
> > > of doing this.

Of course there is, it's just not built in. ;-)

> > 
> > I don't understand.  You seem to have it working.  Is performance the
> > issue?
> 
> The Performance decrase is there but the Problem is far deeper. If 
> an read conflict isn´t resolved after three retries an Exception is 
> raised an the request is aborted. And thats the real problem. 

I see.  I'm not sure switching to TemporaryStorage will help much.  I
would first try using a FileStorage and make sure to put the Zope
"lib/python" directory on the ZEO server's Python's PYTHONPATH (to allow
for conflict resolution under ZEO, ZEO must be able to import the
Products package and subpackages therein).  I don't know if this will
help very much, but it's worth a shot.

> > >  Are we the only site out there running Plone2 (Placeless
> > > transaltion Service) at that scale. How do others handle there Session 
> > 
> > AFAIK Zope is the only appserver that even makes an attempt at allowing
> > session data to be shared between servers like this.  Most other
> > appservers require you to set up "session affinity" in your load
> > balancer and have a session database on each appserver.
>  
> and nealy every system failed to do so. How do you implement this 
> session affinity. Based on source IP. At the moment every large ISP 
> uses multiple Proxyserver so every request comes from a different 
> IP so the affinity doesn´t work for them. The Proxyserver provided by 
> our Computing Center is also split on at least 8 Hosts, so everyone 
> using this proxy would lose session infomation, getting very strange 
> effekts. 

Yes.  It's a hard problem.

- C





More information about the Zope-Dev mailing list