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))[0] ...because it's designed to work with ZODB 3.8 and 3.9, but doesn't support versions. 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 parameters. That leaves the ideas I posted in my last reply... cheers, Chris -- Simplistix - Content Management, Batch Processing & Python Consulting - http://www.simplistix.co.uk _______________________________________________ For more information about ZODB, see the ZODB Wiki: http://www.zope.org/Wikis/ZODB/ ZODB-Dev mailing list - ZODB-Dev@zope.org https://mail.zope.org/mailman/listinfo/zodb-dev