Hi Sebastian,


Why don’t you consider to use memcached for caching the results instead of
using sessions? By using this, Zeo server/Zeo clients restart wont affect
cached data.



HTH,
Dragos


On Sun, Jul 11, 2010 at 8:41 AM, Sebastian Tiedtke <s...@mdvtts.com> wrote:

> Hi all,
>
> We're working on a large scale Plone deployment and recently came across
> some odd behavior with tempstorage at our ZEO server. A limited number, yet
> highly frequented, of pages on our Plone site query backend web services
> that provide location based services such as geocoding and routing (a to b).
> Since those calls to the services are rather computation intense we decided
> to store intermediate and resulting data in sessions vs. re-querying the
> service for no reason.
>
> The system setup consists of a central ZEO server that provides the storage
> for content as well as a temp storage for sessioning. There are multiple
> other servers that run multiple Plone instances with ZEO clients. The ZEO
> server setup is straight forward but I'm happy to provide the configuration
> files. Generally the concept works great.
>
> However, whenever we restart the ZEO server and keep the client instances
> running we get odd behavior with the client instances' sessioning. Every
> client appears to reconnect and, if required, revalidates its cache.
>
> 2010-07-11T14:46:03 INFO ZEO.ClientStorage (6132) Disconnected from
> storage: "('ITIS.mentzdv.de', 8100)"
> 2010-07-11T14:46:03 INFO ZEO.ClientStorage (6132) Disconnected from
> storage: "('ITIS.mentzdv.de', 8100)"
> 2010-07-11T14:46:09 INFO ZEO.ClientStorage (6132) Testing connection
> <ManagedClientConnection ('127.0.0.1', 8100)>
> 2010-07-11T14:46:09 INFO ZEO.zrpc.Connection(C) (127.0.0.1:8100) received
> handshake 'Z303'
> 2010-07-11T14:46:09 INFO ZEO.ClientStorage (6132) Server authentication
> protocol None
> 2010-07-11T14:46:09 INFO ZEO.ClientStorage (6132) Connected to storage: ('
> ITIS.mentzdv.de', 8100)
> 2010-07-11T14:46:09 INFO ZEO.ClientStorage (6132) Testing connection
> <ManagedClientConnection ('127.0.0.1', 8100)>
> 2010-07-11T14:46:09 INFO ZEO.ClientStorage (6132) last inval tid:
> '\x03\x87n\x9d|\x1a\xc2\xaa' 2010-07-11 04:45:29.087000
>
> 2010-07-11T14:46:09 INFO ZEO.ClientStorage (6132) last transaction:
> '\x00\x00\x00\x00\x00\x00\x00\x00' 1900-01-01 00:00:00.000000
> 2010-07-11T14:46:09 INFO ZEO.zrpc.Connection(C) (127.0.0.1:8100) received
> handshake 'Z303'
> 2010-07-11T14:46:10 INFO ZEO.ClientStorage (6132) Verifying cache
> 2010-07-11T14:46:10 INFO ZEO.ClientStorage (6132) Server authentication
> protocol None
> 2010-07-11T14:46:10 INFO ZEO.ClientStorage (6132) Connected to storage: ('
> ITIS.mentzdv.de', 8100)
> 2010-07-11T14:46:10 INFO ZEO.ClientStorage (6132) No verification necessary
> (last_inval_tid up-to-date)
> 2010-07-11T14:46:10 INFO ZEO.ClientStorage (6132) endVerify finishing
> 2010-07-11T14:46:10 INFO ZEO.ClientStorage (6132) endVerify finished
>
>
> The problem is that whenever we hit a session bound page we get following
> error and stack trace:
>
> 2010-07-11T14:58:12 ERROR ZODB.Connection Couldn't load state for 0x82
> Traceback (most recent call last):
>   File
> "g:\mentzdv\plone\instances\zeo04\zope2\lib\python\ZODB\Connection.py", line
> 761, in setstate
>     self._setstate(obj)
>   File
> "g:\mentzdv\plone\instances\zeo04\zope2\lib\python\ZODB\Connection.py", line
> 801, in _setstate
>     p, serial = self._storage.load(obj._p_oid, self._version)
>   File
> "G:\mentzdv\plone\instances\zeo04\zope2\lib\python\ZEO\ClientStorage.py",
> line 727, in load
>     return self.loadEx(oid, version)[:2]
>   File
> "G:\mentzdv\plone\instances\zeo04\zope2\lib\python\ZEO\ClientStorage.py",
> line 750, in loadEx
>     data, tid, ver = self._server.loadEx(oid, version)
>   File
> "G:\mentzdv\plone\instances\zeo04\zope2\lib\python\ZEO\ServerStub.py", line
> 196, in loadEx
>     return self.rpc.call("loadEx", oid, version)
>   File
> "G:\mentzdv\plone\instances\zeo04\zope2\lib\python\ZEO\zrpc\connection.py",
> line 650, in call
>     raise inst # error raised by server
> KeyError: '\x00\x00\x00\x00\x00\x00\x00\x82'
>
>
> In the ZMI under the Control-Panel/Database Tab the temporary database
> seems to be fine. The /temp_folder returns a similar stack trace though:
> Site Error
>
> An error was encountered while publishing this resource.
>
> *KeyError*
> Sorry, a site error occurred.
>
> Traceback (innermost last):
>
>    - Module ZPublisher.Publish, line 202, in publish_module_standard
>    - Module ZPublisher.Publish, line 150, in publish
>    - Module plone.app.linkintegrity.monkey, line 21, in
>    zpublisher_exception_hook_wrapper
>    - Module Zope2.App.startup, line 221, in zpublisher_exception_hook
>    - Module ZPublisher.Publish, line 119, in publish
>    - Module ZPublisher.mapply, line 88, in mapply
>    - Module ZPublisher.Publish, line 42, in call_object
>    - Module App.special_dtml, line 65, in __call__
>    - Module DocumentTemplate.DT_String, line 476, in __call__
>    - Module Products.Transience.Transience, line 926, in housekeep
>    - Module Products.Transience.Transience, line 929, in _housekeep
>    - Module Products.Transience.Transience, line 569, in _finalize
>    - Module Products.Transience.Transience, line 593, in _do_finalize_work
>    - Module ZODB.Connection, line 761, in setstate
>    - Module ZODB.Connection, line 801, in _setstate
>    - Module ZEO.ClientStorage, line 727, in load
>    - Module ZEO.ClientStorage, line 750, in loadEx
>    - Module ZEO.ServerStub, line 196, in loadEx
>    - Module ZEO.zrpc.connection, line 650, in call
>
> KeyError: '\x00\x00\x00\x00\x00\x00\x00\x82' (Also, the following error
> occurred while attempting to render the standard error message, please see
> the event log for full details: You are not allowed to access 'title_or_id'
> in this context)
>
> We know for a fact that one client instance needs to create the actual
> temporary container at the ZEO server upon its restart. Restarting a single
> client instance will make make this instance work but unfortunately won't
> recover all other client instances. All of those problems disappear as soon
> as we restart all instances; until the next ZEO server restart of course.
> The problem doesn't appear to happen if connections drops happen but the ZEO
> server keeps running.
>
> Is that behavior intentional? Any kind of help is very much appreciated.
>
> We're currently using following versions (yes, we're also running on
> windows but I find it hard to believe that the OS is causing those issues).
>
> Zope Version
>  (Zope 2.10.9-final, python 2.4.4, win32)
>  Python Version
>  2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)]
>  System Platform
>  win32
>  SOFTWARE_HOME
>  G:\mentzdv\plone\instances\zeo04\zope2\lib\python
>  ZOPE_HOME
>  G:\mentzdv\plone\instances\zeo04\zope2
>  INSTANCE_HOME
>  G:\mentzdv\plone\instances\zeo04\parts\instance1
>  CLIENT_HOME
>  G:\mentzdv\plone\instances\zeo04\var\instance1
>  Network Services
>  ZServer.HTTPServer.zhttp_server (Port: 8101)
>  Process Id
>  6132 (5328)
>  Running For
>  1 hour 3 min 34 sec
>
> Thanks,
> Sebastian
>
> _______________________________________________
> Zope-Dev maillist  -  Zope-Dev@zope.org
> https://mail.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  **
> (Related lists -
>  https://mail.zope.org/mailman/listinfo/zope-announce
>  https://mail.zope.org/mailman/listinfo/zope )
>
>


-- 
Dragos Chirila
objectval...@gmail.com
(+4) 0722 395375
_______________________________________________
Zope-Dev maillist  -  Zope-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )

Reply via email to