From f09e1a3667c27ac8b22e7defaff2dd2a1ec4d1b2 Mon Sep 17 00:00:00 2001
From: Vincent Pelletier <vincent@nexedi.com>
Date: Thu, 14 Jan 2021 15:01:52 +0900
Subject: [PATCH] CMFActivity.Activity.SQLBase: Properly release reserved
 messages when load raises.

Seen happen on SQLDict with 94 indexation activities being stuck assigned
to a processing node on which load failed because of an SQL deadlock.
---
 product/CMFActivity/Activity/SQLBase.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/product/CMFActivity/Activity/SQLBase.py b/product/CMFActivity/Activity/SQLBase.py
index 85535e4118..1317bef9db 100644
--- a/product/CMFActivity/Activity/SQLBase.py
+++ b/product/CMFActivity/Activity/SQLBase.py
@@ -550,6 +550,9 @@ CREATE TABLE %s (
                                                1, node_set=node_family_id_list)
           if not result:
             break
+          # So reserved documents are properly released even if load raises.
+          for line in result:
+            uid_to_duplicate_uid_list_dict[line.uid] = []
         load = self.getProcessableMessageLoader(db, processing_node)
         m, uid, uid_list = load(result[0])
         message_list = [m]
-- 
2.30.9