[Neo-report] r2552 vincent - /trunk/neo/client/mq.py

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Dec 16 12:19:34 CET 2010


Author: vincent
Date: Thu Dec 16 12:19:34 2010
New Revision: 2552

Log:
Use _evict to prune data for size.

It updates self._size, so we must read it from there each time.
This also uses the history queue, which was ignored by this code, hence
this should make better use of MQ algorithm.

Modified:
    trunk/neo/client/mq.py

Modified: trunk/neo/client/mq.py
==============================================================================
--- trunk/neo/client/mq.py [iso-8859-1] (original)
+++ trunk/neo/client/mq.py [iso-8859-1] Thu Dec 16 12:19:34 2010
@@ -312,21 +312,16 @@ class MQ(object):
                     self._evict(data.key)
 
         # Limit the size.
-        size = self._size
         max_size = self._max_size
-        if size > max_size:
+        if self._size > max_size:
             for cache_buffer in cache_buffers:
-                while size > max_size:
-                    element = cache_buffer.shift()
+                while self._size > max_size:
+                    element = cache_buffer.head()
                     if element is None:
                         break
-                    data = element.data
-                    del self._data[data.key]
-                    size -= sizeof(data.value)
-                    del data.value
-                if size <= max_size:
+                    self._evict(element.data.key)
+                if self._size <= max_size:
                     break
-            self._size = size
 
     __setitem__ = store
 




More information about the Neo-report mailing list