Jim Fulton wrote:
> What's wrong with the original idea of having the server pass the size
> as a keyword parameter? The ZEO protocol is irrelevant.
Okay, from the top:
>> So, a ZODB 3.9.3 ClientStorage calls the ServerStub's history method, this
>> does an rpc call:
>> self.rpc.call('history', oid, length)
>> Which comes in on the server and gets despatched straight out in:
>> /ZEO/zrpc/connection.py", line 581, in handle_request
...which ends up calling .history(oid,length) on zeoraid on RAIDStorage
which is implemented as follows:
def history(self, oid, version='', size=1):
"""Return a sequence of history information dictionaries."""
assert version is ''
return self._apply_single_storage('history', (oid, size))
...because it's designed to work with ZODB 3.8 and 3.9, but doesn't
We can't use the trick of making the Z308-->Z309 adapter pass the size
as a keyword parameter, because the call in this case is actually in
ZODB 3.9's ClientStorage, so the adapter is never used, because all
components involved are speaking Z309.
We also can't change the ClientStorage call to pass the size as a
keyword parameter because ZEO's rpc doesn't appear to support keyword
That leaves the ideas I posted in my last reply...
Simplistix - Content Management, Batch Processing & Python Consulting
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org