From 3a345c0d7f50ff5dd3ece292c10807096c5fd634 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Fri, 24 Nov 2017 09:32:41 +0100 Subject: [PATCH] Stripe webhook: Schedule retry on lock timeout --- src/pretix/plugins/stripe/views.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pretix/plugins/stripe/views.py b/src/pretix/plugins/stripe/views.py index ce95a6523..f254017df 100644 --- a/src/pretix/plugins/stripe/views.py +++ b/src/pretix/plugins/stripe/views.py @@ -18,6 +18,7 @@ from django.views.decorators.http import require_POST from pretix.base.models import Order, Quota, RequiredAction from pretix.base.payment import PaymentException +from pretix.base.services.locking import LockTimeoutException from pretix.base.services.orders import mark_order_paid, mark_order_refunded from pretix.control.permissions import event_permission_required from pretix.multidomain.urlreverse import eventreverse @@ -97,6 +98,8 @@ def charge_webhook(event, event_json, charge_id): elif order.status in (Order.STATUS_PENDING, Order.STATUS_EXPIRED) and charge['status'] == 'succeeded' and not is_refund: try: mark_order_paid(order, user=None) + except LockTimeoutException: + return HttpResponse("Lock timeout, please try again.", status=503) except Quota.QuotaExceededException: if not RequiredAction.objects.filter(event=event, action_type='pretix.plugins.stripe.overpaid', data__icontains=order.code).exists():