[Neo-report] r2336 vincent - in /trunk: TODO neo/client/app.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Oct 1 17:59:27 CEST 2010


Author: vincent
Date: Fri Oct  1 17:59:26 2010
New Revision: 2336

Log:
Use waitResponses to wait for all pending responses for current thread.

This fixes a potential bug triggered by a storage disconnecting while this
loop would be running, expecting answers from that storage: this would
prevent this loop from ever exiting.

Modified:
    trunk/TODO
    trunk/neo/client/app.py

Modified: trunk/TODO
==============================================================================
--- trunk/TODO [iso-8859-1] (original)
+++ trunk/TODO [iso-8859-1] Fri Oct  1 17:59:26 2010
@@ -119,9 +119,6 @@ RC  - Review output of pylint (CODE)
     - Prevent from SQL injection, escape() from MySQLdb api is not sufficient,
       consider using query(request, args) instead of query(request % args)
     - Create database adapter for other RDBMS (sqlite, postgres)
-    - fix __undoLog when there is out of date cells, there is a busy loop
-      because the client expected more answer than the available number of
-      storage nodes.
     - Make listening address and port optionnal, and if they are not provided
       listen on all interfaces on any available port.
     - Replication throttling (HIGH AVAILABILITY)

Modified: trunk/neo/client/app.py
==============================================================================
--- trunk/neo/client/app.py [iso-8859-1] (original)
+++ trunk/neo/client/app.py [iso-8859-1] Fri Oct  1 17:59:26 2010
@@ -1000,8 +1000,7 @@ class Application(object):
             conn.ask(Packets.AskTIDs(first, last, INVALID_PARTITION), queue=queue)
 
         # Wait for answers from all storages.
-        while len(self.local_var.node_tids) != len(storage_node_list):
-            self._waitAnyMessage()
+        self.waitResponses()
 
         # Reorder tids
         ordered_tids = set()





More information about the Neo-report mailing list