[Zope-Checkins] CVS: ZODB3/ZEO/zrpc - connection.py:1.38.2.5
Jeremy Hylton
jeremy@zope.com
Thu, 5 Jun 2003 18:42:37 -0400
Update of /cvs-repository/ZODB3/ZEO/zrpc
In directory cvs.zope.org:/tmp/cvs-serv14016/ZEO/zrpc
Modified Files:
Tag: ZODB3-3_1-branch
connection.py
Log Message:
Make sure invalidations are sent atomically by the ZEO server.
Extend zrpc with a way to call a method without also calling poll() to
do I/O. The I/O is undesirable because it could allow a load from a
client to sneak in before the invalidation is sent. The I/O is
unnecessary because the caller will return to the mainloop and do the
I/O when all the invalidations are sent.
Patch from Guido.
=== ZODB3/ZEO/zrpc/connection.py 1.38.2.4 => 1.38.2.5 ===
--- ZODB3/ZEO/zrpc/connection.py:1.38.2.4 Tue Apr 29 16:36:41 2003
+++ ZODB3/ZEO/zrpc/connection.py Thu Jun 5 18:42:36 2003
@@ -359,6 +359,14 @@
raise DisconnectedError()
self.send_call(method, args, ASYNC)
self.poll()
+
+ def callAsyncNoPoll(self, method, *args):
+ # Like CallAsync but doesn't poll. This exists so that we can
+ # send invalidations atomically to all clients without
+ # allowing any client to sneak in a load request.
+ if self.closed:
+ raise DisconnectedError()
+ self.send_call(method, args, ASYNC)
# handle IO, possibly in async mode