From b589b7a5dcc8307a743c5db50cf5bd09d8abc2b2 Mon Sep 17 00:00:00 2001 From: jonaswinkler <jonas.winkler@jpwinkler.de> Date: Thu, 26 Nov 2020 22:18:30 +0100 Subject: [PATCH] The index is now recreated in case loading fails. --- src/documents/index.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/documents/index.py b/src/documents/index.py index cf312cbcc..a6c3abba8 100644 --- a/src/documents/index.py +++ b/src/documents/index.py @@ -64,15 +64,18 @@ def get_schema(): def open_index(recreate=False): - if exists_in(settings.INDEX_DIR) and not recreate: - return open_dir(settings.INDEX_DIR) - else: - # TODO: this is not thread safe. If 2 instances try to create the index - # at the same time, this fails. This currently prevents parallel - # tests. - if not os.path.isdir(settings.INDEX_DIR): - os.makedirs(settings.INDEX_DIR, exist_ok=True) - return create_in(settings.INDEX_DIR, get_schema()) + # TODO: this is not thread safe. If 2 instances try to create the index + # at the same time, this fails. This currently prevents parallel + # tests. + try: + if exists_in(settings.INDEX_DIR) and not recreate: + return open_dir(settings.INDEX_DIR) + except Exception as e: + logger.error(f"Error while opening the index: {e}, recreating.") + + if not os.path.isdir(settings.INDEX_DIR): + os.makedirs(settings.INDEX_DIR, exist_ok=True) + return create_in(settings.INDEX_DIR, get_schema()) def update_document(writer, doc):