From e8f24d988ce6a95d8f0504ba2a138a10ccfe33e4 Mon Sep 17 00:00:00 2001 From: Vasileios Karakasis Date: Thu, 3 Apr 2025 13:59:51 +0200 Subject: [PATCH 1/2] Fix DB lock order when storing reports --- reframe/frontend/reporting/storage.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reframe/frontend/reporting/storage.py b/reframe/frontend/reporting/storage.py index 13e9bc9da7..12248bcc4c 100644 --- a/reframe/frontend/reporting/storage.py +++ b/reframe/frontend/reporting/storage.py @@ -223,8 +223,8 @@ def _db_store_report(self, conn, report, report_file_path): return session_uuid def store(self, report, report_file=None): - with self._db_connect(self._db_file()) as conn: - with self._db_lock(): + with self._db_lock(): + with self._db_connect(self._db_file()) as conn: return self._db_store_report(conn, report, report_file) @time_function From 9c6e2e0745db32a2493582bf7eccead0f3fd83f8 Mon Sep 17 00:00:00 2001 From: Vasileios Karakasis Date: Thu, 3 Apr 2025 22:05:53 +0200 Subject: [PATCH 2/2] Create parent directories of DB lock required by Python <= 3.7 --- reframe/frontend/reporting/storage.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/reframe/frontend/reporting/storage.py b/reframe/frontend/reporting/storage.py index 12248bcc4c..572b9dd01c 100644 --- a/reframe/frontend/reporting/storage.py +++ b/reframe/frontend/reporting/storage.py @@ -133,6 +133,12 @@ def _db_lock(self): # filelock 3.10 kwargs = {} + # Create parent directories of the lock file + # + # NOTE: This is not necessary for filelock >= 3.12.3 and Python >= 3.8 + # However, we do create it here, in order to support the older Python + # versions. + os.makedirs(prefix, exist_ok=True) return FileLock(os.path.join(prefix, '.db.lock'), **kwargs) def _db_create(self):