From 93bf8cd9d90b2baf077db3a218eaf819cb9aad57 Mon Sep 17 00:00:00 2001 From: Akim Juillerat Date: Mon, 20 Jul 2026 20:48:18 +0200 Subject: [PATCH] [FIX] edi_core_oca: Set exchange record as failed after max retries --- edi_core_oca/models/edi_backend.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/edi_core_oca/models/edi_backend.py b/edi_core_oca/models/edi_backend.py index 00a21fa42..7b564f14b 100644 --- a/edi_core_oca/models/edi_backend.py +++ b/edi_core_oca/models/edi_backend.py @@ -246,13 +246,27 @@ def exchange_send(self, exchange_record): with self.env.cr.savepoint(): self._exchange_send(exchange_record) _logger.debug("%s sent", exchange_record.identifier) + # FIXME: This should probably not be here as we do not depend on queue job except self._send_retryable_exceptions() as err: traceback = _get_exception_traceback() error = _get_exception_msg(err) - _logger.debug("%s send failed. To be retried.", exchange_record.identifier) - raise self._retryable_exception()( - error, **exchange_record._job_retry_params() - ) from err + queue_job = self.env["queue.job"].search( + [("uuid", "=", self.env.context.get("job_uuid"))], limit=1 + ) + # Do not retry if max number of retries is reached + if queue_job and queue_job.retry + 1 >= queue_job.max_retries: + state = "output_error_on_send" + res = f"Error: {error}" + _logger.debug( + "%s send failed. Marked as errored.", exchange_record.identifier + ) + else: + _logger.debug( + "%s send failed. To be retried.", exchange_record.identifier + ) + raise self._retryable_exception()( + error, **exchange_record._job_retry_params() + ) from err except self._swallable_exceptions() as err: if self.env.context.get("_edi_send_break_on_error"): raise