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

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Feb 5 23:22:26 CET 2008


Author: vincent
Date: Tue Feb  5 23:22:25 2008
New Revision: 19089

URL: http://svn.erp5.org?rev=19089&view=rev
Log:
Prevent exceptions raised in notifyUser from making finalizeMessageExecution raise.

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=19089&r1=19088&r2=19089&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/Activity/SQLDict.py (original)
+++ erp5/trunk/products/CMFActivity/Activity/SQLDict.py Tue Feb  5 23:22:25 2008
@@ -373,13 +373,17 @@
         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():
-        # No more activity
-        m.notifyUser(activity_tool, message="Process Finished") # XXX commit bas ???
+    try:
+      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():
+          # No more activity
+          m.notifyUser(activity_tool, message="Process Finished") # XXX commit bas ???
+    except:
+      # Notification failures must not cause this method to raise.
+      LOG('SQLDict', WARNING, 'Exception during notification phase of finalizeMessageExecution', error=sys.exc_info())
 
   # Queue semantic
   def dequeueMessage(self, activity_tool, processing_node):

Modified: erp5/trunk/products/CMFActivity/Activity/SQLQueue.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFActivity/Activity/SQLQueue.py?rev=19089&r1=19088&r2=19089&view=diff
==============================================================================
--- erp5/trunk/products/CMFActivity/Activity/SQLQueue.py (original)
+++ erp5/trunk/products/CMFActivity/Activity/SQLQueue.py Tue Feb  5 23:22:25 2008
@@ -244,14 +244,17 @@
                                              processing_node=INVOKE_ERROR_STATE)
       except:
         LOG('SQLQueue', PANIC, '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():
-        # No more activity
-        m.notifyUser(activity_tool, message="Process Finished") # XXX commit bas ???
-
+    try:
+      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():
+          # No more activity
+          m.notifyUser(activity_tool, message="Process Finished") # XXX commit bas ???
+    except:
+      # Notification failures must not cause this method to raise.
+      LOG('SQLQueue', WARNING, 'Exception during notification phase of finalizeMessageExecution', error=sys.exc_info())
 
   def dequeueMessage(self, activity_tool, processing_node):
     def makeMessageListAvailable(uid_list):




More information about the Erp5-report mailing list