From 954cf69515c087188adcbf5fb845c5e23792db1a Mon Sep 17 00:00:00 2001 From: Antti Soininen Date: Fri, 31 Jan 2025 17:15:46 +0200 Subject: [PATCH] Fix database locking issues in DB editor --- spinetoolbox/parameter_type_validation.py | 3 ++- spinetoolbox/spine_db_editor/mvcmodels/single_models.py | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/spinetoolbox/parameter_type_validation.py b/spinetoolbox/parameter_type_validation.py index f09bbc57d..6468a1c7f 100644 --- a/spinetoolbox/parameter_type_validation.py +++ b/spinetoolbox/parameter_type_validation.py @@ -70,7 +70,8 @@ def start_validating(self, db_mngr, db_map, value_item_ids): if not self._process.is_alive(): self._process.start() for item_id in value_item_ids: - item = db_mngr.get_item(db_map, item_id.item_type, item_id) + with db_mngr.get_lock(db_map): + item = db_mngr.get_item(db_map, item_id.item_type, item_id) args = type_check_args(item) self._task_queue.append( ValidatableValue(ValidationKey(item_id.item_type, id(db_map), item_id.private_id), args) diff --git a/spinetoolbox/spine_db_editor/mvcmodels/single_models.py b/spinetoolbox/spine_db_editor/mvcmodels/single_models.py index c43e843ec..d6ee71ea8 100644 --- a/spinetoolbox/spine_db_editor/mvcmodels/single_models.py +++ b/spinetoolbox/spine_db_editor/mvcmodels/single_models.py @@ -342,8 +342,9 @@ def data(self, index, role=Qt.ItemDataRole.DisplayRole): PARAMETER_TYPE_VALIDATION_ROLE, }: id_ = self._main_data[index.row()] - item = self.db_mngr.get_item(self.db_map, self.item_type, id_) - return self.db_mngr.get_value(self.db_map, item, role) + with self.db_mngr.get_lock(self.db_map): + item = self.db_mngr.get_item(self.db_map, self.item_type, id_) + return self.db_mngr.get_value(self.db_map, item, role) return super().data(index, role) def add_rows(self, ids):