From a9f584cb6578d4249cfa0aa76c55ee7c2c14d33a Mon Sep 17 00:00:00 2001 From: Nigel Date: Sun, 5 Dec 2021 09:18:55 -0700 Subject: [PATCH] fix: swallow Serialization failure We can swallow the serialization exception because there is a scheduled task that will update these later anyway. Fixes #2241 --- InvenTree/InvenTree/exchange.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/InvenTree/InvenTree/exchange.py b/InvenTree/InvenTree/exchange.py index 9981e52ff7..936dd7a76e 100644 --- a/InvenTree/InvenTree/exchange.py +++ b/InvenTree/InvenTree/exchange.py @@ -2,6 +2,7 @@ from common.settings import currency_code_default, currency_codes from urllib.error import HTTPError, URLError from djmoney.contrib.exchange.backends.base import SimpleExchangeBackend +from django.db.utils import OperationalError class InvenTreeExchange(SimpleExchangeBackend): @@ -32,3 +33,12 @@ class InvenTreeExchange(SimpleExchangeBackend): # catch connection errors except (HTTPError, URLError): print('Encountered connection error while updating') + except OperationalError as e: + if 'SerializationFailure' in e.__cause__.__class__.__name__: + print('Serialization Failure while updating exchange rates') + # We are just going to swallow this exception because the + # exchange rates will be updated later by the scheduled task + else: + # Other operational errors probably are still show stoppers + # so reraise them so that the log contains the stacktrace + raise