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

Reply via email to