diff --git a/src/caoscrawler/crawl.py b/src/caoscrawler/crawl.py index 2ce5eae9afbd78cbf4b78db0b152fa7578258ee9..627e1dc4ef041ea4dae03efedd2fabadb37bd07f 100644 --- a/src/caoscrawler/crawl.py +++ b/src/caoscrawler/crawl.py @@ -55,6 +55,9 @@ from linkahead.apiutils import (compare_entities, merge_entities) from linkahead.cached import cache_clear, cached_get_entity_by from linkahead.common.datatype import get_list_datatype, is_reference +from linkahead.exceptions import ( + TransactionError, +) from linkahead.utils.escape import escape_squoted_text from .config import get_config_setting @@ -1081,15 +1084,24 @@ def crawler_main(crawled_directory_path: str, logger.error(err) _update_status_record(crawler.run_id, 0, 0, status="FAILED") return 1 + except TransactionError as err: + logger.debug(traceback.format_exc()) + logger.error(err) + logger.error("Transaction error details:") + for suberr in err.errors: + logger.error("---") + logger.error(suberr.msg) + logger.error(suberr.entity) + return 1 except Exception as err: logger.debug(traceback.format_exc()) - logger.debug(err) + logger.error(err) if "SHARED_DIR" in os.environ: # pylint: disable=E0601 domain = get_config_setting("public_host_url") - logger.error("Unexpected Error: Please tell your administrator about this and provide the" - f" following path.\n{domain}/Shared/" + debuglog_public) + logger.error("Unexpected Error: Please tell your administrator about this and provide " + f"the following path.\n{domain}/Shared/" + debuglog_public) _update_status_record(crawler.run_id, 0, 0, status="FAILED") return 1