diff --git a/server/mergin/sync/models.py b/server/mergin/sync/models.py index 62e4c8b1..ec0568a6 100644 --- a/server/mergin/sync/models.py +++ b/server/mergin/sync/models.py @@ -1042,9 +1042,12 @@ def clear(self): """Clean up pending upload. Uploaded files and table records are removed, and another upload can start. """ - move_to_tmp(self.upload_dir, self.id) - db.session.delete(self) - db.session.commit() + try: + move_to_tmp(self.upload_dir, self.id) + db.session.delete(self) + db.session.commit() + except Exception: + logging.exception(f"Failed to clear upload.") def process_chunks( self, use_shared_chunk_dir: bool diff --git a/server/mergin/sync/public_api_v2_controller.py b/server/mergin/sync/public_api_v2_controller.py index 3e28aa40..76fb5daa 100644 --- a/server/mergin/sync/public_api_v2_controller.py +++ b/server/mergin/sync/public_api_v2_controller.py @@ -13,6 +13,7 @@ from flask_login import current_user from marshmallow import ValidationError from sqlalchemy.exc import IntegrityError +from sqlalchemy.orm.exc import ObjectDeletedError from mergin.sync.tasks import remove_transaction_chunks @@ -333,7 +334,12 @@ def create_project_version(id): ) project_version_created.send(pv) push_finished.send(pv) - except (psycopg2.Error, FileNotFoundError, IntegrityError) as err: + except ( + psycopg2.Error, + FileNotFoundError, + IntegrityError, + ObjectDeletedError, + ) as err: db.session.rollback() logging.exception( f"Failed to finish push for project: {project.id}, project version: {v_next_version}, "