From ce55389c9ce20b84607ea2e7cc018f1bcc165b30 Mon Sep 17 00:00:00 2001 From: Ramon Bartl Date: Mon, 18 Sep 2023 12:09:35 +0200 Subject: [PATCH 1/3] Deactivate objects after reindexing --- src/senaite/core/catalog/base_catalog.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/senaite/core/catalog/base_catalog.py b/src/senaite/core/catalog/base_catalog.py index d00fbb8e56..4b6ab54783 100644 --- a/src/senaite/core/catalog/base_catalog.py +++ b/src/senaite/core/catalog/base_catalog.py @@ -150,8 +150,18 @@ def log_progress(self): .format(self.progress_counter, self.id)) if self.progress_counter % 10000 == 0: + logger.info("Committing transaction savepoint after {} objects" + .format(self.progress_counter)) transaction.savepoint(optimistic=True) + def deactivate_object(self, obj): + """Deactivate the object to save memory + """ + try: + obj._p_deactivate() + except AttributeError: + pass + @security.protected(ManageZCatalogEntries) def clearFindAndRebuild(self): """Considers only mapped types when reindexing the whole catalog @@ -176,6 +186,8 @@ def indexObject(obj, path): if self.is_obj_indexable(obj, portal_type, mapped_types): self._reindexObject(obj, idxs=idxs) # bypass queue self.log_progress() + # flush object from memory + self.deactivate_object(obj) except TypeError: # Catalogs have 'indexObject' as well, but they # take different args, and will fail From 1284c3fa02677f1182d8d074059efad16e48cb89 Mon Sep 17 00:00:00 2001 From: Ramon Bartl Date: Mon, 18 Sep 2023 12:13:11 +0200 Subject: [PATCH 2/3] Changelog updated --- CHANGES.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.rst b/CHANGES.rst index 3acca0c3b4..3df1c04081 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,6 +4,7 @@ Changelog 2.5.0 (unreleased) ------------------ +- #2387 Improve memory usage when rebuilding a catalog - #2386 Add dynamic search index lookup for referencewidget and added default catalog metadata columns - #2385 Fix referencefield dependencies in sample add - #2384 Fix reference widget lookups From fb9b44f16258917465777bf87a865414e7cb195a Mon Sep 17 00:00:00 2001 From: Ramon Bartl Date: Mon, 18 Sep 2023 12:16:40 +0200 Subject: [PATCH 3/3] Comment changed --- src/senaite/core/catalog/base_catalog.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/senaite/core/catalog/base_catalog.py b/src/senaite/core/catalog/base_catalog.py index 4b6ab54783..021eea7468 100644 --- a/src/senaite/core/catalog/base_catalog.py +++ b/src/senaite/core/catalog/base_catalog.py @@ -150,7 +150,7 @@ def log_progress(self): .format(self.progress_counter, self.id)) if self.progress_counter % 10000 == 0: - logger.info("Committing transaction savepoint after {} objects" + logger.info("Creating transaction savepoint after {} objects" .format(self.progress_counter)) transaction.savepoint(optimistic=True)