From 2771288107f67c01a605d836281dcefbfcc79e5f Mon Sep 17 00:00:00 2001 From: Julien Muchembled <jm@nexedi.com> Date: Fri, 27 Apr 2012 16:37:17 +0200 Subject: [PATCH] CMFActivity: fix possible over-reservation of messages This often happens during reindexation of many objects: the number of processable grouped messages often exceeds 100 and 1 extra message is reserved for nothing. This fixes a regression caused by f02bc341c36fe2a2809328ac1cb2adfe0290891a ("CMFActivity: automatically reselect messages in 'processing=1' state"). --- product/CMFActivity/Activity/SQLBase.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/product/CMFActivity/Activity/SQLBase.py b/product/CMFActivity/Activity/SQLBase.py index 12866c4dba..353bd31f69 100644 --- a/product/CMFActivity/Activity/SQLBase.py +++ b/product/CMFActivity/Activity/SQLBase.py @@ -146,11 +146,15 @@ class SQLBase(Queue): If None (or not given) no limit apply. """ select = activity_tool.SQLBase_selectReservedMessageList - result = not group_method_id and select(table=self.sql_table, count=limit, - processing_node=processing_node) - if not result: + if group_method_id: + reserve = limit - 1 + else: + result = select(table=self.sql_table, count=limit, + processing_node=processing_node) + reserve = limit - len(result) + if reserve: activity_tool.SQLBase_reserveMessageList(table=self.sql_table, - count=limit, processing_node=processing_node, to_date=date, + count=reserve, processing_node=processing_node, to_date=date, group_method_id=group_method_id) result = select(table=self.sql_table, processing_node=processing_node, count=limit) -- 2.30.9