[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