[ZODB-Dev] StorageServer's waiting list
Christian Theune
ct at gocept.com
Mon Nov 9 09:25:38 EST 2009
Hi,
in ZEORaid recovery we acquire the commit lock of our RAIDStorage from a
thread to be able to finish recovery atomically.
That RAIDStorage is also being served from a StorageServer which causes
some trouble because it assumes that the only way for a transaction on
the served storage to end is via the StorageServer's tpc_abort or
tpc_finish method.
Thus, when a transaction comes in while the recovery has a transaction
going on the StorageServer puts it into the waiting list but never gets
the signal to continue.
Reading the code talking to tpc_transaction I found that this seems to
be merely an optimization (which I can disable by just letting
tpc_transaction return None all the time).
Why is the waiting list necessary? And why does it work alright in a ZEO
fan-out scenario?
Christian
--
Christian Theune · ct at gocept.com
gocept gmbh & co. kg · forsterstraße 29 · 06112 halle (saale) · germany
http://gocept.com · tel +49 345 1229889 0 · fax +49 345 1229889 1
Zope and Plone consulting and development
More information about the ZODB-Dev
mailing list