[Zope] CoreSessionTracking: Initializing a new berkeley storage

Chris McDonough chrism@digicool.com
Sun, 18 Feb 2001 18:08:09 -0500


This looks reasonable to me.  Stupid you're not.  ;-)

The external data container timeout looks like it might be a bug.  I'll need
to check it out, but it won't be until midweek.

Randy, if this mounting stuff continues to work for you, might you turn this
into a HOWTO?

----- Original Message -----
From: "Randall F. Kern" <randy@spoke.net>
To: <zope@zope.org>
Sent: Sunday, February 18, 2001 5:16 PM
Subject: [Zope] CoreSessionTracking: Initializing a new berkeley storage


My goal is robust session storage, using CoreSessionTracking 0.7.

I've got (all running on a single linux box):

ZEO, providing two storages:
1. FileStorage (with the name 'main')
2. BerkelyStorage (named 'session')

Zope 2.3.0:
With a custom_zodb.py file, which uses a ClientStorage to
connect to ZEO using the 'main' storage.

External Method:
Inside the Extensions directory of my Product directory, I've
got a SessionMount.py, with a function that returns a ZODB.DB() on
another ClientStorage talking to the same ZEO but using the 'session'
storage.


Now I try to add an External Method Mount.  I give it the module
ZSpoke.SessionMount (my product is named ZSpoke- this seems to work
fine.)  I set the function to createSessionDB(), also works.  The path
is set to /session_storage.

This results in an error from MountPoint._getMountRoot:  "No
'Application' object exists in the mountable database."

So...  I started python and made an application object and a
session_storage folder:

Python 1.5.2 (#2, Nov 14 2000, 17:28:06)  [GCC egcs-2.91.66
19990314/Linux (egcs- on linux2
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> import Zope
Applying TransparentFolders patch version 0.3.
>>> from Products.ZSpoke.Extensions.SessionMount import createSessionDB
>>> db = createSessionDB()
>>> conn = db.open()
>>> root = conn.root()
>>> from OFS.Application import Application
>>> app = Application()
>>> root['Application'] = app
>>> get_transaction().commit()
>>> from OFS.Folder import Folder
>>> folder = Folder()
>>> folder.id = 'session_storage'
>>> folder.title = 'Session Storage'
>>> app._setObject('session_storage', folder)
'session_storage'
>>> get_transaction().commit()
>>> conn.close()


Then I added an External Session Data Container inside the
session_storage folder, and changed my Session Data Manager to use it.

Everything seems to work, but I'm very unsure :)

One small problem I've noticed is the 'Data object timeout value in
minutes' property on the Manage tab of the External Session Data
Container is always 0, even if I try to change it.

Anyone have any ideas, confirmation, I'm stupid, etc?
Thanks!
-Randy

_______________________________________________
Zope maillist  -  Zope@zope.org
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists -
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )