From d69940d276f2127ac8022e3965126939e57164d4 Mon Sep 17 00:00:00 2001 From: Valentin Rigal <rigal@teklia.com> Date: Wed, 19 May 2021 11:04:07 +0200 Subject: [PATCH] Handle backend 409 conflict error code --- arkindex_worker/worker/__init__.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/arkindex_worker/worker/__init__.py b/arkindex_worker/worker/__init__.py index c34a24ae..77412c47 100644 --- a/arkindex_worker/worker/__init__.py +++ b/arkindex_worker/worker/__init__.py @@ -128,17 +128,25 @@ class ElementsWorker( # Process the element and report its progress if activities are enabled response = self.update_activity(element.id, ActivityState.Started) - if isinstance(response, ErrorResponse) and response.status_code == 400: - # Bad request error when setting an activity to "started" mean that we cannot + if isinstance(response, ErrorResponse) and response.status_code == 409: + # 409 conflict error when setting an activity to "started" mean that we cannot # process this element. We assume that the reason is that the state transition # was forbidden i.e. that the activity was already in a started or processed state. # This allow concurrent access to an element activity. - # Element is not counted as failed as it is handled by another process. - logger.info( - f'Cannot start processing element "{element.id}". ' + # Element is not counted as failed as it is probably handled by another process. + logger.warning( + f"Cannot start processing element {element.id} due to a conflict. " "Another process could have processed it with the same version already." ) continue + elif isinstance(response, Exception): + # Count the element as failed in case the activity update to "started" failed with no conflict. + # This prevent from processing the element + logger.warning( + f"Element {element.id} is counted as failed because its activity could not be initialized." + ) + failed += 1 + continue self.process_element(element) self.update_activity(element.id, ActivityState.Processed) except Exception as e: @@ -217,3 +225,4 @@ class ElementsWorker( logger.warning( f"Failed to update activity of element {element_id} to {state.value}: {e}" ) + return e -- GitLab