[ZODB-Dev] ClientDisconnected with ZEORaid
Dylan Jay
djay at pretaweb.com
Mon May 24 08:27:55 EDT 2010
Hi,
I've been testing out ZEORaid and it seems to work fine in itself, but
ZODB client connections seem to be getting into a ClientDisconnected
state and never getting out. Zope has a main ZEORaid to connect to and
several fallbacks. Most of the time when it's connection is dropped it
switch to checking it's backups. However sometimes I'll get a log
trace like this.
2010-05-24T17:35:28 WARNING ZEO.zrpc (30496) CW: error connecting to
('x.x.x.188', 8323): ECONNREFUSED
------
2010-05-24T17:35:28 INFO ZEO.ClientStorage (30496) Testing connection
<ManagedClientConnection ('x.x.x.186', 8321)>
2010-05-24T17:35:56 ERROR ZODB.Connection Couldn't load state for 0x36df
...
raise ClientDisconnected()
ClientDisconnected
It looks like a transaction has started while the ZEOClient is still
verifying the connection and this causes the ClientDisconnected error.
This would be fine except that it never seems to retry again.
Looking at the code my reading is that this behaviour is by design.
--- http://svn.zope.org/ZODB/trunk/src/ZEO/zrpc/client.py ---
class ConnectThread(threading.Thread):
"""Thread that tries to connect to server given one or more addresses.
The thread is passed a ConnectionManager and the manager's client as
arguments. It calls testConnection() on the client when a socket
connects; that should return 1 or 0 indicating whether this is a
preferred or a fallback connection. It may also raise an exception, in
which case the connection is abandoned.
---
Is there any good reason not to retry connecting?
---
Dylan Jay
Plone Solutions Manager. www.pretaweb.com
P +612 80819071 M +61421477460
skype - dylan_jay twitter - djay75
More information about the ZODB-Dev
mailing list