mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-27 01:43:22 +00:00
Add rescue statements to subs jobs so that when an order placement or confirmation fails, there's a bugsnag alert for it and the job continues processing the rest of the orders
This commit is contained in:
@@ -50,6 +50,8 @@ class SubscriptionConfirmJob
|
||||
else
|
||||
send_failed_payment_email(order)
|
||||
end
|
||||
rescue StandardError => e
|
||||
Bugsnag.notify(e, order: order)
|
||||
end
|
||||
|
||||
def process_payment!(order)
|
||||
|
||||
@@ -29,10 +29,16 @@ class SubscriptionPlacementJob
|
||||
|
||||
def place_order_for(proxy_order)
|
||||
JobLogger.logger.info("Placing Order for Proxy Order #{proxy_order.id}")
|
||||
proxy_order.initialise_order!
|
||||
initialise_order(proxy_order)
|
||||
place_order(proxy_order.order)
|
||||
end
|
||||
|
||||
def initialise_order(proxy_order)
|
||||
proxy_order.initialise_order!
|
||||
rescue StandardError => e
|
||||
Bugsnag.notify(e, subscription: proxy_order.subscription, proxy_order: proxy_order)
|
||||
end
|
||||
|
||||
def place_order(order)
|
||||
record_order(order)
|
||||
return record_issue(:complete, order) if order.completed?
|
||||
@@ -42,8 +48,9 @@ class SubscriptionPlacementJob
|
||||
|
||||
move_to_completion(order)
|
||||
send_placement_email(order, changes)
|
||||
rescue StateMachine::InvalidTransition
|
||||
record_and_log_error(:processing, order)
|
||||
rescue StandardError => e
|
||||
record_and_log_error(:processing, order, e.message)
|
||||
Bugsnag.notify(e, order: order)
|
||||
end
|
||||
|
||||
def cap_quantity_and_store_changes(order)
|
||||
|
||||
@@ -22,12 +22,15 @@ module OrderManagement
|
||||
summary_for(order).record_issue(type, order, message)
|
||||
end
|
||||
|
||||
def record_and_log_error(type, order)
|
||||
def record_and_log_error(type, order, error_message = nil)
|
||||
return record_issue(type, order) unless order.errors.any?
|
||||
|
||||
error = "Subscription#{type.to_s.camelize}Error"
|
||||
line1 = "#{error}: Cannot process order #{order.number} due to errors"
|
||||
line2 = "Errors: #{order.errors.full_messages.join(', ')}"
|
||||
|
||||
error_message ||= order.errors.full_messages.join(', ')
|
||||
line2 = "Errors: #{error_message}"
|
||||
|
||||
JobLogger.logger.info("#{line1}\n#{line2}")
|
||||
record_issue(type, order, line2)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user