Skip to content

Commit 88447ef

Browse files
committed
Add error handling for ObjectNotFoundErrror
- add exception handling for clearing upload
1 parent 181cb97 commit 88447ef

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

server/mergin/sync/models.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,9 +1042,12 @@ def clear(self):
10421042
"""Clean up pending upload.
10431043
Uploaded files and table records are removed, and another upload can start.
10441044
"""
1045-
move_to_tmp(self.upload_dir, self.id)
1046-
db.session.delete(self)
1047-
db.session.commit()
1045+
try:
1046+
move_to_tmp(self.upload_dir, self.id)
1047+
db.session.delete(self)
1048+
db.session.commit()
1049+
except Exception:
1050+
logging.exception(f"Failed to clear upload.")
10481051

10491052
def process_chunks(
10501053
self, use_shared_chunk_dir: bool

server/mergin/sync/public_api_v2_controller.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from flask_login import current_user
1414
from marshmallow import ValidationError
1515
from sqlalchemy.exc import IntegrityError
16+
from sqlalchemy.orm.exc import ObjectDeletedError
1617

1718
from mergin.sync.tasks import remove_transaction_chunks
1819

@@ -333,7 +334,12 @@ def create_project_version(id):
333334
)
334335
project_version_created.send(pv)
335336
push_finished.send(pv)
336-
except (psycopg2.Error, FileNotFoundError, IntegrityError) as err:
337+
except (
338+
psycopg2.Error,
339+
FileNotFoundError,
340+
IntegrityError,
341+
ObjectDeletedError,
342+
) as err:
337343
db.session.rollback()
338344
logging.exception(
339345
f"Failed to finish push for project: {project.id}, project version: {v_next_version}, "
@@ -346,6 +352,7 @@ def create_project_version(id):
346352
).count()
347353
):
348354
move_to_tmp(version_dir)
355+
upload.clear()
349356
return UploadError().response(422)
350357
# catch exception during pg transaction so we can rollback and prevent PendingRollbackError during upload clean up
351358
except gevent.timeout.Timeout:

0 commit comments

Comments
 (0)