diff --git a/product/CMFActivity/Activity/SQLDict.py b/product/CMFActivity/Activity/SQLDict.py index 8d31df784ecfa2737f150e5fb061f80eab929975..c595c239b85d738bee920d417b2b3ae104879ef3 100644 --- a/product/CMFActivity/Activity/SQLDict.py +++ b/product/CMFActivity/Activity/SQLDict.py @@ -373,13 +373,17 @@ class SQLDict(RAMDict, SQLBase): 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): diff --git a/product/CMFActivity/Activity/SQLQueue.py b/product/CMFActivity/Activity/SQLQueue.py index 750455d683970773e10e9633e64179986f2e3d7e..60c20dd958f899fb18e51b9b6feffeb9af3f5eb7 100644 --- a/product/CMFActivity/Activity/SQLQueue.py +++ b/product/CMFActivity/Activity/SQLQueue.py @@ -244,14 +244,17 @@ class SQLQueue(RAMQueue, SQLBase): 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):