From 96192adce293f7217a2ff6ec95fd085b3b7abbf6 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 27 Jun 2022 11:30:38 +0200 Subject: [PATCH] Catch wrong cloud responses when it responds with a new file name It could happen if there are bugs in the cloud, e.g. if they strip special characters somewhere. We'd want to know it if they do. But we also don't want Cura to crash if the remote connection is not reliable, or if there's changes/bugs in the future. Fixes Sentry issue CURA-42F. --- .../src/DFFileExportAndUploadManager.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/plugins/DigitalLibrary/src/DFFileExportAndUploadManager.py b/plugins/DigitalLibrary/src/DFFileExportAndUploadManager.py index 69bf4b1233..4defd2f409 100644 --- a/plugins/DigitalLibrary/src/DFFileExportAndUploadManager.py +++ b/plugins/DigitalLibrary/src/DFFileExportAndUploadManager.py @@ -1,5 +1,6 @@ -# Copyright (c) 2021 Ultimaker B.V. +# Copyright (c) 2022 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. + import json import threading from json import JSONDecodeError @@ -135,6 +136,9 @@ class DFFileExportAndUploadManager: else: Logger.log("e", "Wrong response type received. Aborting uploading file to the Digital Library") return + if file_name not in self._file_upload_job_metadata: + Logger.error(f"API response for uploading doesn't match the file name we just uploaded: {file_name} was never uploaded.") + return with self._message_lock: self.progress_message.show() self._file_upload_job_metadata[file_name]["file_upload_response"] = file_upload_response @@ -335,10 +339,11 @@ class DFFileExportAndUploadManager: self._handleNextUploadJob() def _handleNextUploadJob(self): - match self._upload_jobs: - case [job, *jobs]: - job.start() - self._upload_jobs = jobs + try: + job = self._upload_jobs.pop(0) + job.start() + except IndexError: + pass # Empty list, do nothing. def initializeFileUploadJobMetadata(self) -> Dict[str, Any]: metadata = {}