[Erp5-report] r16294 - /erp5/trunk/products/CMFActivity/Activity/SQLQueue.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Sep 12 13:43:06 CEST 2007


Author: vincent
Date: Wed Sep 12 13:43:05 2007
New Revision: 16294

URL: http://svn.erp5.org?rev=16294&view=rev
Log:
Revert last commit.

Modified:
    erp5/trunk/products/CMFActivity/Activity/SQLQueue.py

Modified: erp5/trunk/products/CMFActivity/Activity/SQLQueue.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/Activity/SQLQueue.py?rev=16294&r1=16293&r2=16294&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/Activity/SQLQueue.py (original)
+++ erp5/trunk/products/CMFActivity/Activity/SQLQueue.py Wed Sep 12 13:43:05 2007
@@ -318,7 +318,9 @@
                                       validation_text_dict)
 
       # XXX probably this below can be optimized by assigning multiple messages at a time.
+      path_dict = {}
       assignMessage = activity_tool.SQLQueue_assignMessage
+      processing_node = 1
       id_tool = activity_tool.getPortalObject().portal_ids
       for message in message_dict.itervalues():
         path = '/'.join(message.object_path)
@@ -345,6 +347,17 @@
                                                   tag=tag)
           get_transaction().commit()
         else:
+          # Select a processing node. If the same path appears again, dispatch the message to
+          # the same node, so that object caching is more efficient. Otherwise, apply a round
+          # robin scheduling.
+          node = path_dict.get(path)
+          if node is None:
+            node = processing_node
+            path_dict[path] = node
+            processing_node += 1
+            if processing_node > node_count:
+              processing_node = 1
+
           assignMessage(processing_node=node, uid=message.uid, broadcast=0)
           get_transaction().commit() # Release locks immediately to allow processing of messages
 




More information about the Erp5-report mailing list