[Erp5-report] r18985 - in /erp5/trunk/products/CMFActivity/Activity: SQLDict.py SQLQueue.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Feb 1 17:10:51 CET 2008


Author: vincent
Date: Fri Feb  1 17:10:49 2008
New Revision: 18985

URL: http://svn.erp5.org?rev=18985&view=rev
Log:
Call notifyUser after doing activity state cleanup. This makes it less problematic if it raises (activities are already in a clean state).

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

Modified: erp5/trunk/products/CMFActivity/Activity/SQLDict.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/Activity/SQLDict.py?rev=18985&r1=18984&r2=18985&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/Activity/SQLDict.py (original)
+++ erp5/trunk/products/CMFActivity/Activity/SQLDict.py Fri Feb  1 17:10:49 2008
@@ -320,6 +320,7 @@
     final_error_uid_list = []
     make_available_uid_list = []
     message_with_active_process_list = []
+    notify_user_list = []
     something_failed = (len([x for x in message_uid_priority_list if not x[1].is_executed]) != 0)
     for uid, m, priority in message_uid_priority_list:
       if m.is_executed:
@@ -334,7 +335,7 @@
            issubclass(m.exc_type, ConflictError):
           delay_uid_list.append(uid)
         elif priority > MAX_PRIORITY:
-          m.notifyUser(activity_tool)
+          notify_user_list.append(m)
           final_error_uid_list.append(uid)
         else:
           try:
@@ -372,6 +373,8 @@
         LOG('SQLDict', PANIC, 'Failed to unreserve %r' % (make_available_uid_list, ), error=sys.exc_info())
       else:
         LOG('SQLDict', TRACE, 'Freed messages %r' % (make_available_uid_list, ))
+    for m in notify_user_list:
+      m.notifyUser(activity_tool)
     for m in message_with_active_process_list:
       active_process = activity_tool.unrestrictedTraverse(m.active_process)
       if not active_process.hasActivity():

Modified: erp5/trunk/products/CMFActivity/Activity/SQLQueue.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/Activity/SQLQueue.py?rev=18985&r1=18984&r2=18985&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/Activity/SQLQueue.py (original)
+++ erp5/trunk/products/CMFActivity/Activity/SQLQueue.py Fri Feb  1 17:10:49 2008
@@ -191,6 +191,7 @@
     delay_uid_list = []
     final_error_uid_list = []
     message_with_active_process_list = []
+    notify_user_list = []
     for uid, m, priority in message_uid_priority_list:
       if m.is_executed:
         deletable_uid_list.append(uid)
@@ -201,7 +202,7 @@
            issubclass(m.exc_type, ConflictError):
           delay_uid_list.append(uid)
         elif priority > MAX_PRIORITY:
-          m.notifyUser(activity_tool)
+          notify_user_list.append(m)
           final_error_uid_list.append(uid)
         else:
           try:
@@ -243,6 +244,8 @@
                                              processing_node=INVOKE_ERROR_STATE)
       except:
         LOG('SQLQueue', WARNING, 'Failed to set message to error state for %r' % (final_error_uid_list, ), error=sys.exc_info())
+    for m in notify_user_list:
+      m.notifyUser(activity_tool)
     for m in message_with_active_process_list:
       active_process = activity_tool.unrestrictedTraverse(m.active_process)
       if not active_process.hasActivity():




More information about the Erp5-report mailing list