[Erp5-report] r13757 - in /erp5/trunk/products/CMFActivity: Activity/ skins/activity/

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Mar 28 15:57:57 CEST 2007


Author: vincent
Date: Wed Mar 28 15:57:56 2007
New Revision: 13757

URL: http://svn.erp5.org?rev=13757&view=rev
Log:
Use portal_ids to generate message uids instead of using MySQL AUTO_INCREMENT. This will lower deadlock probability by removing the one caused by AUTO_INCREMENT table-level lock.

Modified:
    erp5/trunk/products/CMFActivity/Activity/SQLQueue.py
    erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_createMessageTable.zsql
    erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_writeMessage.zsql

Modified: erp5/trunk/products/CMFActivity/Activity/SQLQueue.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/Activity/SQLQueue.py?rev=13757&r1=13756&r2=13757&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/Activity/SQLQueue.py (original)
+++ erp5/trunk/products/CMFActivity/Activity/SQLQueue.py Wed Mar 28 15:57:56 2007
@@ -61,7 +61,9 @@
   """
   def prepareQueueMessage(self, activity_tool, m):
     if m.is_registered:
-      activity_tool.SQLQueue_writeMessage(path = '/'.join(m.object_path) ,
+      #import pdb; pdb.set_trace()
+      activity_tool.SQLQueue_writeMessage(uid = activity_tool.getPortalObject().portal_ids.generateNewLengthId(id_group='portal_activity_queue'),
+                                          path = '/'.join(m.object_path) ,
                                           method_id = m.method_id,
                                           priority = m.activity_kw.get('priority', 1),
                                           broadcast = m.activity_kw.get('broadcast', 0),
@@ -316,8 +318,10 @@
           # Broadcast messages must be distributed into all nodes.
           activity_tool.SQLQueue_assignMessage(processing_node=1, uid=uid)
           if node_count > 1:
+            uid_list = activity_tool.getPortalObject().portal_ids.generateNewLengthIdList(id_group='portal_activity_queue', id_count=node_count - 1)
             for node in range(2, node_count+1):
-              activity_tool.SQLQueue_writeMessage( path = line.path,
+              activity_tool.SQLQueue_writeMessage(uid = uid_list.pop(),
+                                                  path = line.path,
                                                   method_id = line.method_id,
                                                   priority = line.priority,
                                                   broadcast = 1,

Modified: erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_createMessageTable.zsql
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_createMessageTable.zsql?rev=13757&r1=13756&r2=13757&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_createMessageTable.zsql (original)
+++ erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_createMessageTable.zsql Wed Mar 28 15:57:56 2007
@@ -9,7 +9,7 @@
 </dtml-comment>
 <params></params>
 CREATE TABLE `message_queue` (
-  `uid` int(11) NOT NULL auto_increment,
+  `uid` int(11) NOT NULL,
   `date` datetime,
   `path` VARCHAR(255),
   `method_id` VARCHAR(40),

Modified: erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_writeMessage.zsql
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_writeMessage.zsql?rev=13757&r1=13756&r2=13757&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_writeMessage.zsql (original)
+++ erp5/trunk/products/CMFActivity/skins/activity/SQLQueue_writeMessage.zsql Wed Mar 28 15:57:56 2007
@@ -7,7 +7,8 @@
 class_name:
 class_file:
 </dtml-comment>
-<params>path
+<params>uid
+path
 method_id
 message
 priority
@@ -17,6 +18,7 @@
 tag</params>
 INSERT INTO message_queue
 SET
+  uid = <dtml-sqlvar uid type="int">,
 	path = <dtml-sqlvar path type="string">,
   <dtml-if date>date = <dtml-sqlvar date type="string">, <dtml-else>date = <dtml-sqlvar "_.DateTime()" type="datetime">, </dtml-if> 
 	method_id = <dtml-sqlvar method_id type="string">,




More information about the Erp5-report mailing list