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

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Mar 28 11:33:36 CEST 2007


Author: vincent
Date: Wed Mar 28 11:33:33 2007
New Revision: 13742

URL: http://svn.erp5.org?rev=13742&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/SQLDict.py
    erp5/trunk/products/CMFActivity/skins/activity/SQLDict_createMessageTable.zsql
    erp5/trunk/products/CMFActivity/skins/activity/SQLDict_writeMessage.zsql
    erp5/trunk/products/CMFActivity/skins/activity/SQLDict_writeMessageList.zsql

Modified: erp5/trunk/products/CMFActivity/Activity/SQLDict.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/Activity/SQLDict.py?rev=13742&r1=13741&r2=13742&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/Activity/SQLDict.py (original)
+++ erp5/trunk/products/CMFActivity/Activity/SQLDict.py Wed Mar 28 11:33:33 2007
@@ -93,7 +93,9 @@
       group_method_id_list = [message.activity_kw.get('group_method_id', '') for message in registered_message_list]
       tag_list = [message.activity_kw.get('tag', '') for message in registered_message_list]
       order_validation_text_list = [self.getOrderValidationText(message) for message in registered_message_list]
-      activity_tool.SQLDict_writeMessageList( path_list = path_list,
+      uid_list = activity_tool.getPortalObject().portal_ids.generateNewLengthIdList(id_group='portal_activity', id_count=len(registered_message_list))
+      activity_tool.SQLDict_writeMessageList( uid_list = uid_list,
+                                              path_list = path_list,
                                               method_id_list = method_id_list,
                                               priority_list = priority_list,
                                               broadcast_list = broadcast_list,
@@ -517,8 +519,10 @@
           uid = line.uid
           activity_tool.SQLDict_assignMessage(processing_node=1, uid=[uid])
           if node_count > 1:
+            uid_list = activity_tool.getPortalObject().id_tool.generateNewLengthIdList(id_group='portal_activity', id_count=node_count - 1)
             for node in range(2, node_count+1):
-              activity_tool.SQLDict_writeMessage( path = path,
+              activity_tool.SQLDict_writeMessage( uid = uid_list.pop(),
+                                                  path = path,
                                                   method_id = line.method_id,
                                                   priority = line.priority,
                                                   broadcast = 1,

Modified: erp5/trunk/products/CMFActivity/skins/activity/SQLDict_createMessageTable.zsql
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/skins/activity/SQLDict_createMessageTable.zsql?rev=13742&r1=13741&r2=13742&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/skins/activity/SQLDict_createMessageTable.zsql (original)
+++ erp5/trunk/products/CMFActivity/skins/activity/SQLDict_createMessageTable.zsql Wed Mar 28 11:33:33 2007
@@ -9,7 +9,7 @@
 </dtml-comment>
 <params></params>
 CREATE TABLE `message` (
-  `uid` INT UNSIGNED NOT NULL AUTO_INCREMENT,
+  `uid` INT UNSIGNED NOT NULL,
   `date` DATETIME NOT NULL,
   `path` VARCHAR(255) NOT NULL,
   `method_id` VARCHAR(255) NOT NULL,

Modified: erp5/trunk/products/CMFActivity/skins/activity/SQLDict_writeMessage.zsql
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/skins/activity/SQLDict_writeMessage.zsql?rev=13742&r1=13741&r2=13742&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/skins/activity/SQLDict_writeMessage.zsql (original)
+++ erp5/trunk/products/CMFActivity/skins/activity/SQLDict_writeMessage.zsql Wed Mar 28 11:33:33 2007
@@ -7,7 +7,8 @@
 class_name:
 class_file:
 </dtml-comment>
-<params>path
+<params>uid
+path
 method_id
 message
 priority
@@ -19,6 +20,7 @@
 order_validation_text</params>
 INSERT INTO message
 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">,

Modified: erp5/trunk/products/CMFActivity/skins/activity/SQLDict_writeMessageList.zsql
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/skins/activity/SQLDict_writeMessageList.zsql?rev=13742&r1=13741&r2=13742&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/skins/activity/SQLDict_writeMessageList.zsql (original)
+++ erp5/trunk/products/CMFActivity/skins/activity/SQLDict_writeMessageList.zsql Wed Mar 28 11:33:33 2007
@@ -7,7 +7,8 @@
 class_name:
 class_file:
 </dtml-comment>
-<params>path_list
+<params>uid_list
+path_list
 method_id_list
 message_list
 priority_list
@@ -18,11 +19,12 @@
 tag_list
 order_validation_text_list</params>
 INSERT INTO message
-(path, date, method_id, processing_node, processing, priority, broadcast, group_method_id, tag, order_validation_text, message)
+(uid, path, date, method_id, processing_node, processing, priority, broadcast, group_method_id, tag, order_validation_text, message)
 VALUES
 <dtml-in prefix="loop" expr="_.range(_.len(path_list))">
 <dtml-if sequence-start><dtml-else>,</dtml-if>
 (
+  <dtml-sqlvar expr="uid_list[loop_item]" type="int">,
   <dtml-sqlvar expr="path_list[loop_item]" type="string">,
   <dtml-if date_list><dtml-sqlvar expr="date_list[loop_item]" type="datetime"><dtml-else><dtml-sqlvar "_.DateTime()" type="datetime"></dtml-if>, 
   <dtml-sqlvar expr="method_id_list[loop_item]" type="string">,




More information about the Erp5-report mailing list