Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: Jim Fulton <jim <at> zope.com>
Subject: SVN: ZODB/trunk/src/ZEO/zrpc/connection.py Removed a needless timeout to a condition wait call. Using timeouts
Newsgroups: gmane.comp.python.zope.zodb.cvs
Date: Wednesday 28th March 2007 23:03:52 UTC (over 10 years ago)
Log message for revision 73871:
  Removed a needless timeout to a condition wait call. Using timeouts
  can cause signidficant delays, especially on systems with very
  course-grained sleeps, like most linux systems.  This change makes the
  ZEO tests run about 25% faster on an Ubuntu desktop system.  We
  suspect the production impact to be much greater, at least on some
  systems.
  
  Removed some non-async code, now that we no-longer have a non-async
  mode. (I cowardly left an assert behind to make sure.:)
  

Changed:
  U   ZODB/trunk/src/ZEO/zrpc/connection.py

-=-
Modified: ZODB/trunk/src/ZEO/zrpc/connection.py
===================================================================
--- ZODB/trunk/src/ZEO/zrpc/connection.py	2007-03-28 19:20:19 UTC (rev
73870)
+++ ZODB/trunk/src/ZEO/zrpc/connection.py	2007-03-28 23:03:51 UTC (rev
73871)
@@ -439,6 +439,9 @@
         self.closed = True
         self.__super_close()
         self.close_trigger()
+        self.replies_cond.acquire()
+        self.replies_cond.notifyAll()
+        self.replies_cond.release()
 
     def close_trigger(self):
         # Overridden by ManagedClientConnection.
@@ -733,24 +736,8 @@
                         self.log("wait(%d): reply=%s" %
                                  (msgid, short_repr(reply)), level=TRACE)
                     return reply
-                if self.is_async():
-                    self.replies_cond.wait(10.0)
-                else:
-                    self.replies_cond.release()
-                    try:
-                        try:
-                            if __debug__:
-                                self.log("wait(%d): asyncore.poll(%s)" %
-                                         (msgid, delay), level=TRACE)
-                            asyncore.poll(delay, self._singleton)
-                            if delay < 1.0:
-                                delay += delay
-                        except select.error, err:
-                            self.log("Closing.  asyncore.poll() raised
%s."
-                                     % err, level=BLATHER)
-                            self.close()
-                    finally:
-                        self.replies_cond.acquire()
+                assert self.is_async() # XXX we're such cowards
+                self.replies_cond.wait()
         finally:
             self.replies_cond.release()
 
CD: 3ms