5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-26 16:06:22 +00:00

fix: reintentar antes de reportar el error #15824

This commit is contained in:
f 2024-03-25 14:17:26 -03:00
parent 718b864356
commit 88cc5f9cb0
No known key found for this signature in database

View file

@ -3,15 +3,16 @@
class ActivityPub class ActivityPub
# Procesar las actividades a medida que llegan # Procesar las actividades a medida que llegan
class ProcessJob < ApplicationJob class ProcessJob < ApplicationJob
attr_reader :body attr_reader :body, :initial_state
# Procesa la actividad en segundo plano # Procesa la actividad en segundo plano
# #
# @param :body [String] # @param :body [String]
# @param :initial_state [Symbol,String] # @param :initial_state [Symbol,String]
def perform(site:, body:, initial_state: :paused) def perform(site:, body:, initial_state: :paused)
@body = body
@site = site @site = site
@body = body
@initial_state = initial_state
ActiveRecord::Base.connection_pool.with_connection do ActiveRecord::Base.connection_pool.with_connection do
::ActivityPub.transaction do ::ActivityPub.transaction do
@ -25,10 +26,24 @@ class ActivityPub
activity.update_activity_pub_state! activity.update_activity_pub_state!
end end
end end
end
# Al generar una excepción, en lugar de seguir intentando, enviamos # Al generar una excepción, en lugar de seguir intentando, enviamos
# el reporte. # el reporte.
rescue Exception => e def handle_error(error)
ExceptionNotifier.notify_exception(e, data: { site: site.name, body: body, initial_state: initial_state, activity: original_activity, message: 'Esta acción se canceló automáticamente, para regenerarla, volver a correr el proceso con los mismos parámetros.' }) case error
when ActiveRecord::RecordInvalid then retry_in(ApplicationJob.random_wait)
else
ExceptionNotifier.notify_exception(
error,
data: {
site: site.name,
body: body,
initial_state: initial_state,
activity: original_activity,
message: 'Esta acción se canceló automáticamente, para regenerarla, volver a correr el proceso con los mismos parámetros.'
})
end
end end
private private