[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