From b6e0985699609ab3c004b50b92fbdb8dc882f8e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <h.tomwoerden@indiscale.com>
Date: Mon, 30 Nov 2020 15:38:38 +0000
Subject: [PATCH] Treat error in collect_information

---
 CHANGELOG.md                     |  2 +-
 src/caosadvancedtools/crawler.py | 28 +++++++++++++++++++++++++++-
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0cef3c6b..3618c3fe 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -41,7 +41,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 ### Removed ###
 
 ### Fixed ###
-
+- An exception in collect_information does no longer lead to a break down.
 * Fixed an issue where `caosadvancedtools.cache.UpdateCache` would
   cause an `sqlite3.IntegrityError` if more than one change was cached
   for the same entity.
diff --git a/src/caosadvancedtools/crawler.py b/src/caosadvancedtools/crawler.py
index a5ed4caa..631f1228 100644
--- a/src/caosadvancedtools/crawler.py
+++ b/src/caosadvancedtools/crawler.py
@@ -215,10 +215,36 @@ class Crawler(object):
                         errors_occured = True
                         tbs.append(e)
 
+        logger.debug(separated("Number of Cfoods: "+str(len(cfoods))))
         logger.debug(separated("CFoods are collecting information..."))
 
+        remove_cfoods = []
+
         for cfood in cfoods:
-            cfood.collect_information()
+            try:
+                cfood.collect_information()
+            except DataInconsistencyError as e:
+                logger.debug(traceback.format_exc())
+                logger.debug(e)
+                remove_cfoods.append(cfood)
+            except Exception as e:
+                try:
+                    DataModelProblems.evaluate_exception(e)
+                except BaseException:
+                    pass
+                logger.debug("Failed during execution of {}!".format(
+                    Cfood.__name__))
+                logger.debug(traceback.format_exc())
+                logger.debug(e)
+                remove_cfoods.append(cfood)
+
+                if self.abort_on_exception:
+                    raise e
+
+        for rm in remove_cfoods:
+            cfoods.remove(rm)
+            logger.debug("Removed {} due to an Error in "
+                         "collect_information".format(str(rm)))
 
         logger.debug(
             separated("Trying to attach further items to created CFoods"))
-- 
GitLab