[Neo-report] r2579 gregory - in /trunk/neo: client/ tests/client/

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Dec 29 09:50:00 CET 2010


Author: gregory
Date: Wed Dec 29 09:49:59 2010
New Revision: 2579

Log:
ConnectionPool iterator raise if there is no storage available.

Remove 'else' sections of 'for' loops from app.
(and the one in checkCurrentSerialInTransaction was broken)

Modified:
    trunk/neo/client/app.py
    trunk/neo/client/pool.py
    trunk/neo/tests/client/testConnectionPool.py

Modified: trunk/neo/client/app.py
==============================================================================
--- trunk/neo/client/app.py [iso-8859-1] (original)
+++ trunk/neo/client/app.py [iso-8859-1] Wed Dec 29 09:49:59 2010
@@ -647,8 +647,6 @@ class Application(object):
                     self.local_var.asked_object = -1
                     continue
                 break
-            else:
-                raise NEOStorageError('no storage available')
         if self.local_var.asked_object == -1:
             raise NEOStorageError('inconsistent data')
 
@@ -1307,8 +1305,6 @@ class Application(object):
                 conn.ask(packet, queue=queue)
             except ConnectionClosed:
                 continue
-        else:
-            raise NEOStorageError('no storage available')
 
         self._waitAnyMessage(False)
 

Modified: trunk/neo/client/pool.py
==============================================================================
--- trunk/neo/client/pool.py [iso-8859-1] (original)
+++ trunk/neo/client/pool.py [iso-8859-1] Wed Dec 29 09:49:59 2010
@@ -148,6 +148,7 @@ class ConnectionPool(object):
         """ Iterate over nodes responsible of a object by it's ID """
         pt = self.app.getPartitionTable()
         cell_list = pt.getCellListForOID(object_id, readable, writable)
+        yielded = 0
         if cell_list:
             shuffle(cell_list)
             cell_list.sort(key=self.getCellSortKey)
@@ -156,7 +157,10 @@ class ConnectionPool(object):
                 node = cell.getNode()
                 conn = getConnForNode(node, wait_ready=wait_ready)
                 if conn is not None:
+                    yielded += 1
                     yield (node, conn)
+        if not yielded:
+            raise NEOStorageError('no storage available')
 
     @profiler_decorator
     def getConnForNode(self, node, wait_ready=True):

Modified: trunk/neo/tests/client/testConnectionPool.py
==============================================================================
--- trunk/neo/tests/client/testConnectionPool.py [iso-8859-1] (original)
+++ trunk/neo/tests/client/testConnectionPool.py [iso-8859-1] Wed Dec 29 09:49:59 2010
@@ -20,6 +20,7 @@ from mock import Mock
 
 from neo.tests import NeoUnitTestBase
 from neo.client.app import ConnectionPool
+from neo.client.exception import NEOStorageError
 
 class ConnectionPoolTests(NeoUnitTestBase):
 
@@ -74,7 +75,7 @@ class ConnectionPoolTests(NeoUnitTestBas
         pt = Mock({'getCellListForOID': []})
         app = Mock({'getPartitionTable': pt})
         pool = ConnectionPool(app)
-        self.assertRaises(StopIteration, pool.iterateForObject(oid).next)
+        self.assertRaises(NEOStorageError, pool.iterateForObject(oid).next)
 
     def test_iterateForObject_connectionRefused(self):
         # connection refused




More information about the Neo-report mailing list